39 SQL 轉換函式
阿新 • • 發佈:2020-06-25
1. 前言
解釋:SQL 內建的轉換函式主要用於對欄位進行
型別轉換
,嘗試從一種欄位型別轉換為另一種欄位型別。
本小節,我們將一起學習 SQL 中的轉換函式。
SQL 提供了諸多資料型別,如現在十分新潮的json
型別,但我們沒辦法直接來宣告一個值為 json 型別,因此 SQL 提供了轉換函式來幫助我們轉換值的型別。
2. 實踐
在 SQL 中,常見的轉化函式有兩個:
函式名 | 作用 |
---|---|
CAST | 資料型別轉換,引數為表示式,由AS連線,如 24.0 AS int |
COLALESCE | 任意多個引數,返回第一個非空的引數 |
2.1 例1 轉化數值型別
通過CAST
我們可以把 float 型別轉化為 decimal 型別,如下:
SELECT CAST(123.123 AS decimal(8,1));
+-------------------------------+
| CAST(123.123 AS decimal(8,1)) |
+-------------------------------+
| 123.1 |
+-------------------------------+
在 MySQL 中 CAST 無法將 float 型別轉換為 int 型別,它會報錯,而在 PostgreSQL 中卻可以正常工作:
SELECT CAST(123.123 AS int);
int4
------
123
2.2 例2 字串轉 json
CAST
還可以將符合 json 規範字符串型別轉化為 json 型別。
SELECT CAST('{"a":"b"}' AS json);
+---------------------------+
| CAST('{"a":"b"}' AS json) |
+---------------------------+
| {"a": "b"} |
+---------------------------+
2.3 例3 第一個非空值
COLALESCE
用於返回引數列表中的第一個非空數值。
SELECT COALESCE(null,1,2);
+--------------------+
| COALESCE(null,1,2) |
+--------------------+
| 1 |
+--------------------+
引數列表中共有 null、1、2 三個引數,COLALESCE 函式返回了第一個非空的引數,即 1。
3. 小結
- 絕大多數情況下,你都不需要顯示的通過 CAST 來進行型別轉換,資料庫會自動轉換型別。
- CAST 在不同的資料庫中實現差異較大,遷移性比較差,儘量不要使用。