CAST() 函數 (SQL CAST() Function)
CAST() 函數用來將一個值從一種資料型別轉換為另一種資料型別,這在處理不同型別資料的運算或比較時非常實用。
CAST 語法
CAST(expression AS data_type)
expression: 要轉換的值或欄位data_type: 目標資料型別
常見的資料型別
| 資料型別 | 說明 |
|---|---|
| CHAR(n) | 固定長度字串 |
| VARCHAR(n) | 可變長度字串 |
| INT / INTEGER | 整數 |
| DECIMAL(p,s) | 固定精度小數 |
| DATE | 日期 |
| DATETIME | 日期時間 |
CAST 基本用法 (Example)
數字轉字串
SELECT CAST(123 AS CHAR);
結果:'123'
字串轉數字
SELECT CAST('456' AS INT);
結果:456
小數轉整數
SELECT CAST(123.45 AS INT);
結果:123 (小數部分會被截斷)
字串轉日期
SELECT CAST('2024-01-15' AS DATE);
CAST 實務應用 (Example)
假設我們有一個 orders 資料表,其中 order_id 是字串型別:
| order_id | amount |
|---|---|
| '100' | 5000 |
| '25' | 3000 |
| '8' | 1500 |
若直接用字串排序,'8' 會排在 '25' 後面 (因為 '8' > '2'):
-- 字串排序 (非預期結果)
SELECT * FROM orders ORDER BY order_id;
使用 CAST 轉換為數字後排序:
SELECT * FROM orders ORDER BY CAST(order_id AS INT);
查詢結果 (正確的數字順序):
| order_id | amount |
|---|---|
| '8' | 1500 |
| '25' | 3000 |
| '100' | 5000 |
數字格式化
將數字轉換為固定精度小數:
SELECT CAST(123 AS DECIMAL(10,2));
結果:123.00
CAST 與 CONVERT
- CAST(): ANSI SQL 標準,各資料庫通用
- CONVERT(): SQL Server 特有函數,提供更多格式化選項
建議優先使用 CAST(),可確保 SQL 語法跨資料庫相容。