CAST
函數在SQL中用途廣泛,不僅可以轉換為數值類型,還可以在多種場景下用于數據類型轉換。以下是一些常見的用途和示例:
類型轉換
使用CAST函數可以在查詢數據庫時根據需要調整數據格式或類型
CAST(expression AS target_type)
-
expression
是你希望轉換的原始值或者列名。target_type
是你希望將原始值轉換成的目標數據類型。
將整數轉換為小數,或小數轉換為整數。
SELECT CAST(10 AS DECIMAL(10,2)); -- 結果:10.00
SELECT CAST(10.5 AS INT); -- 結果:10
字符串轉換為數值
將存儲為字符串的數值轉換為數值類型以便進行數學運算。
SELECT CAST('123.45' AS DECIMAL(10,2)); -- 結果:123.45
數值轉換為字符串
將數值格式化為特定的字符串格式。
SELECT CAST(123.45 AS CHAR); -- 結果:'123.45'
日期和時間轉換
將日期時間類型轉換為字符串,或反之。
SELECT CAST('2025-06-12' AS DATE); -- 將字符串轉換為日期
SELECT CAST(NOW() AS CHAR); -- 將當前日期時間轉換為字符串
布爾值轉換
在支持布爾值的數據庫中,可以將0
和1
轉換為布爾值。
SELECT CAST(1 AS BOOLEAN); -- 結果:TRUE
SELECT CAST(0 AS BOOLEAN); -- 結果:FALSE
JSON轉換
在支持JSON的數據庫中,將JSON字符串轉換為JSON類型。
SELECT CAST('{"key":"value"}' AS JSON);
跨數據庫兼容性
在不同數據庫系統之間遷移數據時,CAST
可以確保數據類型的一致性。
解決類型不匹配問題
在SQL查詢中,如果操作符或函數要求特定的數據類型,CAST
可以用來解決類型不匹配的問題。
在SQL表達式中嵌套使用
CAST
可以與其他函數結合使用,提供更靈活的數據處理能力。
SELECT ROUND(CAST(SUM(resolved_tickets) AS DECIMAL(10,2)) / SUM(wkord) * 100, 2);
在SQL注入防護中使用
在某些情況下,CAST
可以用來確保輸入的類型正確,從而減少SQL注入的風險。
在條件語句中使用
在WHERE
子句或CASE
語句中轉換數據類型。
SELECT *
FROM tickets
WHERE CAST(resolved AS DATE) = '2025-06-12';
不同的數據庫系統對CAST
的支持和語法略有不同:
總之,CAST
函數是一個非常靈活且強大的工具,可以幫助你在SQL中處理各種數據類型轉換需求。