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

SQL Server CAST 與 CONVERT 函數完整指南:語法、參數、樣式與隱性/顯式轉換差異

     編輯:關於SqlServer

語法比較

CAST (ANSI SQL-92 標準)

CAST ( expression AS data_type )

CONVERT (SQL Server 專用,支援格式樣式)

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

參數說明

參數說明
expression任何有效運算式 (資料行、變數、常值、函數呼叫等)
data_type目標系統資料類型 (含 bigint、sql_variant),不可使用使用者定義型別
length選用,僅適用 char/varchar/nchar/nvarchar/binary/varbinary
style選用,日期/時間轉字串或數值轉字串的格式代碼 (見下表)

常用日期/時間樣式代碼 (style)

style輸出格式範例標準
101mm/dd/yyyy美國
102yyyy.mm.ddANSI
103dd/mm/yyyy英國/法國
112yyyymmddISO (無分隔)
120yyyy-mm-dd hh:mi:ss (24h)ODBC 標準
121yyyy-mm-dd hh:mi:ss.mmm (含毫秒)ODBC 毫秒
126yyyy-mm-ddThh:mi:ss.mmm (ISO8601)XML/JSON 交換

完整代碼表請參閱 SQL Server 聯機叢書「CAST 和 CONVERT」。

隱性轉換 vs 顯式轉換

隱性轉換

  • 由 SQL Server 自動執行,使用者不可見。
  • 例:SMALLINT 與 INT 比較時,SMALLINT 自動提升為 INT。
  • 優點:程式碼簡潔;缺點:可能導致索引失效、精度遺失、效能計畫不穩定。

顯式轉換

  • 使用 CAST 或 CONVERT 明確指定。
  • 例:CAST($157.27 AS VARCHAR(10)) → '$157.27'
  • 最佳實務: 所有跨類型比較、串聯、儲存操作均建議顯式轉換,確保行為可預期。

轉換支援矩陣關鍵點

  • nchar → image:完全不支援 (隱性/顯式皆不行)
  • nchar → binary:僅支援顯式 CAST/CONVERT
  • nchar → nvarchar:隱性/顯式皆支援
  • sql_variant:隱性轉入支援 (其他型別 → variant),隱性轉出不支援 (variant → 其他型別需顯式)

優先順序建議

CAST 符合 ANSI 標準,跨資料庫可移植性較佳,優先使用;需特定日期/數值格式輸出時改用 CONVERT。

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