SQL轉換函式(CAST 和 CONVERT)
如果 SQL Server 2005 沒有自動執行資料型別的轉換,可以使用 CAST 和 CONVERT 轉換函式將一種資料型別的表示式轉換為另一種資料型別的表示式。例如,如果比較 char 和 datetime 表示式、smallint 和 int 表示式或不同長度的 char 表示式,則 SQL Server 自動對這些表示式進行轉換。這種轉換稱為隱式轉換。不必使用 CAST 或 CONVERT 來進行這些隱式轉換。但可以在下列轉換方案中使用 CAST 和 CONVERT:
- 兩個表示式的資料型別完全相同。
- 兩個表示式可以隱式轉換。
- 需要隱式轉換資料型別。
如果嘗試進行不可能的轉換(例如,將包括字母的 char 表示式轉換為 int),SQL Server 將顯示錯誤訊息。
此外,CAST 函式和 CONVERT 函式還可用於獲取各種特殊資料格式,並可用於選擇列表、WHERE 子句以及允許使用表示式的任何位置中。
如果希望 Transact-SQL 程式程式碼符合 SQL-92,請使用 CAST 而不要使用 CONVERT。如果要利用 CONVERT 中的功能,請使用 CONVERT 而不要使用 CAST。
使用 CAST 或 CONVERT 時,需要提供以下資訊:
- 要轉換的表示式;例如,銷售報表要求銷售資料從貨幣資料轉換為字元資料。
- 要將指定的表示式轉換為的資料型別,例如 varchar 或其他 SQL Server 系統資料型別。
除非將被轉換的值儲存起來,否則轉換僅在 CAST 函式或 CONVERT 函式的作用時間範圍內有效。
如果轉換時沒有指定資料型別的長度,則 SQL Server 自動將 30 作為長度值。
示例
下列示例中,第一個 SELECT
語句使用 CONVERT
、第二個 SELECT
語句使用 CAST
來將 Title
列轉換為 nvarchar(20)
列以縮短標題的長度。
或
USE AdventureWorks; GO SELECT CONVERT(nvarchar(20下面是這兩者查詢的結果集。
1.擷取datetime型別的日期,不需要小時分鐘等等:
select convert(char(10), getdate(),120)結果為:
2010-08-092.擷取datetime型別的具體時間,不需要日期:
select convert(char(8), getdate(),108)結果為:
00:35:36 擴充套件資料:1.CAST 和 CONVERT (Transact-SQL) http://technet.microsoft.com/zh-cn/library/ms187928%28SQL.90%29.aspx2.CAST 和 CONVERT轉換函式(MSDN參考) http://wenku.baidu.com/view/3c6f15fe04a1b0717fd5dd81.html