1. CAST函式的基本概念
什麼是CAST函式
MySQL的CAST函式是一個用於資料型態轉換的SQL函式,可將指定的表達式轉換成另一種型態。透過CAST函式,可以將字串轉換為整數,或將日期型態轉換為字串。在資料庫操作中,這是一個維持資料型態一致性、經常被使用的便利工具。
CAST函式的主要用途
CAST函式的應用範圍很廣,常見的情境包括:
- 資料正規化:統一不同格式的資料。例如,將資料表中儲存的日期格式進行統一。
- 資料型態轉換:將整數轉為字串,或反向操作,以最佳化資料顯示與計算。
SELECT CAST('2023-09-22' AS DATE);
CAST函式與其他型態轉換的差異
CAST函式與MySQL的其他轉換函式(例如CONVERT
)類似,但主要差異在於:CAST遵循SQL標準,因此在更多資料庫系統中被支援。而CONVERT
則是MySQL特有的函式,主要用於字元集轉換等特殊用途。
2. CAST函式的語法與使用方式
CAST函式語法
CAST函式的基本語法如下:
CAST(表達式 AS 資料型態)
其中「表達式」為需要轉換的值,「資料型態」為欲轉換成的型態。
CAST函式使用範例
- 轉換為整數型:將字串轉換成整數。
SELECT CAST('123' AS SIGNED);
- 轉換為字串型:將數值轉換成字串。
SELECT CAST(123 AS CHAR);
錯誤處理
使用CAST函式時,若輸入無效的值可能會產生錯誤。例如嘗試將'abc'
轉換為數值會失敗。在這種情況下,建議搭配IFNULL
等函式進行錯誤處理。
3. 常見的資料型態與轉換範例
常見的資料型態轉換情境
CAST函式常用於以下型態轉換:
- INT型:將數值轉換成整數。
- VARCHAR型:將數值或日期轉換成字串。
- DATE型:將字串或數值轉換成日期。
轉換為INT型
SELECT CAST('456' AS SIGNED);
此範例將字串'456'
轉換為整數。
轉換為VARCHAR型
SELECT CAST(456 AS CHAR);
將整數轉換成字串。此操作在需要以特定格式顯示資料時很有用。
轉換為DATE型
SELECT CAST('2024-01-01' AS DATE);
此範例將字串轉換為日期型態,使資料能正確儲存並支援日期運算。

4. CAST函式的注意事項與最佳實踐
注意事項
使用CAST函式時,需注意以下事項:
- 型態相容性:不相容的轉換可能導致錯誤,需事先確認。
- 資料精度損失:特別是浮點數轉換時,可能會有精度流失。
最佳實踐
- 使用DECIMAL型:在需要高精度的情況下,建議將浮點數轉換為DECIMAL型,以避免精度損失。
SELECT CAST(123.456 AS DECIMAL(5,2));
- 錯誤處理:當資料中可能存在非預期型態時,建議搭配
IFNULL
或CASE
進行錯誤處理。
5. CAST函式與CONVERT函式的差異
比較CAST與CONVERT函式
CAST與CONVERT都能進行資料型態轉換,但語法與用途有所不同:
- CAST函式:遵循SQL標準,語法為
CAST(表達式 AS 資料型態)
,可在多數資料庫中使用。 - CONVERT函式:MySQL特有函式,語法為
CONVERT(表達式, 資料型態)
,多用於字元集轉換。
CONVERT函式範例
CONVERT函式主要用於字元集轉換:
SELECT CONVERT('abc' USING utf8);
此範例將字串的字元集轉換為utf8。
該用哪一個?
一般情況建議使用符合SQL標準的CAST函式,但若需進行字元集轉換時,則應使用CONVERT函式。
6. 實務應用:使用CAST函式進行資料操作
實際操作範例
以下示範如何在實際資料操作中使用CAST函式。
將數值轉換成字串後排序
例如,將數值轉換為字串後再排序:
SELECT CAST(column_name AS CHAR) FROM table ORDER BY column_name;
將字串轉換成數值後過濾
同樣地,可以將字串轉換為數值後進行篩選:
SELECT * FROM table WHERE CAST(column_name AS SIGNED) > 100;
7. 總結
文章總結
CAST函式是一個在資料型態轉換中非常實用的工具。本文從基本語法、常見用法到實際範例,都進行了說明。在進行資料轉換時,請注意型態相容性與資料精度,以正確運用CAST函式提升操作效率。