首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server CAST 與 CONVERT 資料類型轉換實戰速查表

     編輯:關於SqlServer

語法對照


-- CAST (ANSI 標準)
CAST(expression AS data_type)

-- CONVERT (SQL Server 專屬,支援 style)
CONVERT(data_type[(length)], expression [, style])

常用轉換範例集

場景T-SQL結果/說明
大整數 → 16 進位 → 取後 6 碼 → 十進位SELECT 22222222 - CONVERT(bigint, 2222222222 / CONVERT(int, 0x1000000) * CONVERT(int, 0x1000000))7629710 (位元運算技巧)
數值 → 字串做 LIKE 比對SELECT * FROM titles WHERE CAST(ytd_sales AS char(20)) LIKE '3%'避免隱含轉換導致索引失效
數值加百分號顯示SELECT CAST(field1/field2 AS varchar(20)) + '%'報表常用
四捨五入取整SELECT CAST(ROUND(ytd_sales/price, 0) AS int) AS Copies FROM titles
CASE 回傳值統一轉型SELECT CONVERT(target_type, CASE ... END)確保 CASE 分支型別一致
密碼大小寫敏感比對WHERE CAST(pwd AS varbinary) = CAST(@input AS varbinary)二進位比較區分大小寫
日期格式化 (常用)CONVERT(char(10), GETDATE(), 101)04/18/2003 (美式)
CONVERT(char(10), GETDATE(), 102)2003.04.18 (ANSI)
CONVERT(char(10), GETDATE(), 121)2003-04-18 (ODBC/ISO)

進階提示

  • 優先用 CAST:可移植、語意清晰
  • 需格式化日期/數值用 CONVERT:style 參數功能強大
  • 隱含轉換是效能殺手:WHERE varchar_col = 123 導致索引掃描,改為 WHERE varchar_col = '123' 或 WHERE CAST(varchar_col AS int) = 123 (但後者仍可能掃描,最好修正應用層參數型別)
  • TRY_CAST / TRY_CONVERT (SQL 2012+):轉換失敗回傳 NULL 而非報錯,適合髒資料清洗

轉換函數是 T-SQL 基石,熟練掌握 style 代碼與隱含轉換陷阱,能避免 80% 的型別相關 Bug 與效能問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved