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_idamount
'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_idamount
'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 語法跨資料庫相容。