SQL 轉(zhuǎn)換函數(shù)
1. 前言
慕課解釋:SQL 內(nèi)置的轉(zhuǎn)換函數(shù)主要用于對(duì)字段進(jìn)行
類型轉(zhuǎn)換
,嘗試從一種字段類型轉(zhuǎn)換為另一種字段類型。
本小節(jié),我們將一起學(xué)習(xí) SQL 中的轉(zhuǎn)換函數(shù)。
SQL 提供了諸多數(shù)據(jù)類型,如現(xiàn)在十分新潮的json
類型,但我們沒(méi)辦法直接來(lái)聲明一個(gè)值為 json 類型,因此 SQL 提供了轉(zhuǎn)換函數(shù)來(lái)幫助我們轉(zhuǎn)換值的類型。
2. 實(shí)踐
在 SQL 中,常見(jiàn)的轉(zhuǎn)化函數(shù)有兩個(gè):
函數(shù)名 | 作用 |
---|---|
CAST | 數(shù)據(jù)類型轉(zhuǎn)換,參數(shù)為表達(dá)式,由AS連接,如 24.0 AS int |
COLALESCE | 任意多個(gè)參數(shù),返回第一個(gè)非空的參數(shù) |
2.1 例1 轉(zhuǎn)化數(shù)值類型
通過(guò)CAST
我們可以把 float 類型轉(zhuǎn)化為 decimal 類型,如下:
SELECT CAST(123.123 AS decimal(8,1));
+-------------------------------+
| CAST(123.123 AS decimal(8,1)) |
+-------------------------------+
| 123.1 |
+-------------------------------+
在 MySQL 中 CAST 無(wú)法將 float 類型轉(zhuǎn)換為 int 類型,它會(huì)報(bào)錯(cuò),而在 PostgreSQL 中卻可以正常工作:
SELECT CAST(123.123 AS int);
int4
------
123
2.2 例2 字符串轉(zhuǎn) json
CAST
還可以將符合 json 規(guī)范字符串類型轉(zhuǎn)化為 json 類型。
SELECT CAST('{"a":"b"}' AS json);
+---------------------------+
| CAST('{"a":"b"}' AS json) |
+---------------------------+
| {"a": "b"} |
+---------------------------+
2.3 例3 第一個(gè)非空值
COLALESCE
用于返回參數(shù)列表中的第一個(gè)非空數(shù)值。
SELECT COALESCE(null,1,2);
+--------------------+
| COALESCE(null,1,2) |
+--------------------+
| 1 |
+--------------------+
參數(shù)列表中共有 null、1、2 三個(gè)參數(shù),COLALESCE 函數(shù)返回了第一個(gè)非空的參數(shù),即 1。
3. 小結(jié)
- 絕大多數(shù)情況下,你都不需要顯示的通過(guò) CAST 來(lái)進(jìn)行類型轉(zhuǎn)換,數(shù)據(jù)庫(kù)會(huì)自動(dòng)轉(zhuǎn)換類型。
- CAST 在不同的數(shù)據(jù)庫(kù)中實(shí)現(xiàn)差異較大,遷移性比較差,盡量不要使用。