一、被轉化的變量類型
在SQL中,字符型轉化為數值型是一種類型的轉換。一種變量從字符類型轉化為數值類型需要根據被轉化的變量的數值型來決定具體採用那個函數進行轉化。
比如,MySQL支持的數值類型包括整型、浮點型、雙精度型等。如果被轉化的字符型變量是小數,則需要使用CAST() 或 CONVERT()函數進行轉化。同時,在進行轉化之前還需要對源數據進行預處理。
SELECT CAST ('123.45' AS DECIMAL(5,2));
SELECT CONVERT ('123.45', DECIMAL(5,2));
上面兩個語句的輸出結果相同:
+------------------------+
| CAST('123.45' AS DECIMAL(5,2)) |
+------------------------+
| 123.45 |
+------------------------+
二、關於CAST()函數
CAST()函數是MySQL中進行字符型轉化的函數之一。它表示將某一列或變量強制轉化為另外一個數據類型。
例如,把字符串轉化為整型、把日期轉化為字符串等等。
在使用CAST()函數時需要指定轉化後的數據類型,否則MySQL會默認選擇一個默認類型。
SELECT CAST('123456789' AS UNSIGNED);
SELECT CAST('-123456789' AS SIGNED);
SELECT CAST('123456789' AS BINARY);
輸出結果如下:
+-------------------------+
| CAST('123456789' AS UNSIGNED) |
+-------------------------+
| 123456789 |
+-------------------------+
+-------------------------+
| CAST('-123456789' AS SIGNED) |
+-------------------------+
| -123456789 |
+-------------------------+
+---------------------+
| CAST('123456789' AS BINARY) |
+---------------------+
| 123456789 |
+---------------------+
三、關於CONVERT()函數
CONVERT()函數同樣是MySQL中進行字符型轉化的函數之一。
與CAST()不同的是,CONVERT()函數可以將一個類型轉為另一個類型,可以方便地完成類型轉化工作。
同樣地,也需要指定轉化後的數據類型。
SELECT CONVERT('123.45', DECIMAL(4,1));
SELECT CONVERT('123.45', DECIMAL(4,0));
SELECT CONVERT('123.45', DECIMAL(4,2));
輸出結果如下:
+--------------------------------+
| CONVERT('123.45', DECIMAL(4,1)) |
+--------------------------------+
| 123.5 |
+--------------------------------+
+--------------------------------+
| CONVERT('123.45', DECIMAL(4,0)) |
+--------------------------------+
| 0 |
+--------------------------------+
+---------------------------------+
| CONVERT('123.45', DECIMAL(4,2)) |
+---------------------------------+
| 123.45 |
+---------------------------------+
四、關於錯誤處理
對於字符型轉化為數值型可能出現的錯誤,MySQL在處理時需要注意。
一種可能的情況是源字符串不符合數值型格式的字符導致轉化失敗。
SELECT CAST('abc' AS SIGNED);
SELECT CONVERT('abc', SIGNED);
輸出結果如下:
+---------------------+
| CAST('abc' AS SIGNED) |
+---------------------+
| 0 |
+---------------------+
+----------------------+
| CONVERT('abc', SIGNED) |
+----------------------+
| 0 |
+----------------------+
MySQL在進行轉化失敗時會返回0,這也是數值型變量的默認值。
另外,MySQL也支持IFNULL()函數,它會在轉化失敗時返回另外一個指定的默認值。
SELECT IFNULL(CAST('abc' AS SIGNED), -1);
SELECT IFNULL(CONVERT('abc', SIGNED), -2);
輸出結果如下:
+------------------------------------+
| IFNULL(CAST('abc' AS SIGNED), -1) |
+------------------------------------+
| -1 |
+------------------------------------+
+-------------------------------------+
| IFNULL(CONVERT('abc', SIGNED), -2) |
+-------------------------------------+
| -2 |
+-------------------------------------+
五、總結
SQL中字符型轉化為數值型是非常常見的操作之一,可以使用CAST()和CONVERT()兩個函數進行變量類型轉化。在進行類型轉化時需要注意源數據的格式和轉化後目標數據的格式,在處理可能出現的錯誤時也需要進行相關的處理,以確保數據的準確性和有效性。
原創文章,作者:XNLQC,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/334245.html