標籤:var sqlserver 引用 格式 alt man 閱讀 郵箱 數值
1 概述
本篇文章主要講解SqlServer中類型轉換涉及的兩個函數:CAST和CONVERT。
2 具體內容
2.1 CAST
(1)作用:將一種資料類型的運算式轉換為另一種資料類型的運算式。
(2)定義:
1 CAST ( expression AS data_type)
Parameters:
expression:任何可轉換為 data_type
的有效運算式;
data_type:系統提供的目標資料類型。 該類型必須為基元(標量)類型。 使用的 data_type
取決於查詢空間。 如果使用EntityCommand 執行查詢,則資料類型為概念性模型中定義的類型。
Return Value::
返回與 data_type
相同的值。
(3)例子
1 SELECT CAST(‘2017‘ AS INT) --2017 2 3 SELECT CAST(2017 AS INT) --2017 4 5 SELECT CAST(2017.3 AS INT) --2017 6 7 SELECT CAST(‘2017.3‘ AS INT)--訊息 245,層級 16,狀態 1,第 1 行,在將 varchar 值 ‘2017.3‘ 轉換成資料類型 int 時失敗。 8 9 SELECT CAST(‘2017.3‘ AS decimal) --201710 11 SELECT CAST(‘2017.3‘ AS decimal(8,2)) --2017.30
2.2 CONVERT
(1)作用:將一種資料類型的運算式轉換為另一種資料類型的運算式。
(2)定義:
1 CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Parameters:
expression:任何有效運算式;
data_type:目標資料類型。這包括 xml、bigint 和 sql_variant。不能使用別名資料類型;
length:指定目標資料類型長度的可選整數。預設值為 30;
style:指定 CONVERT 函數如何轉換 expression 的整數運算式。如果樣式為 NULL,則返回 NULL。該範圍是由 data_type 確定的。有關詳細資料,請參閱“備忘”部分;
Return Value:
返迴轉換為 data_type 的 expression。
(3)例子
1 SELECT CONVERT(INT,‘2017‘) --20172 3 SELECT CONVERT(INT,2017.3) --20174 5 SELECT CONVERT(INT,‘2017.3‘) --訊息 245,層級 16,狀態 1,第 1 行,在將 varchar 值 ‘2017.3‘ 轉換成資料類型 int 時失敗。6 7 SELECT CONVERT(decimal,‘2017.3‘) --20178 9 SELECT CONVERT(decimal(8,2),‘2017.3‘) --2017.30
2.3 CAST和CONVERT比較
(1)cast一般更容易使用,convert的優點是可以格式化日期和數值;
(2)convert一般用於日期和時間值,小數之間轉換,cast一般用於小數轉數值和字元型;
(3)converk顯示轉換,cast是強制轉換;
(4)例子
1 select CONVERT(varchar, getdate(), 120 ) --2017-08-13 03:56:14 2 3 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),‘-‘,‘‘),‘ ‘,‘‘),‘:‘,‘‘) --20170813035627 4 5 select CONVERT(varchar(12) , getdate(), 111 ) --2017/08/13 6 7 select CONVERT(varchar(12) , getdate(), 112 ) --20170813 8 9 select CONVERT(varchar(12) , getdate(), 102 ) --2017.08.1310 11 select CONVERT(varchar(12) , getdate(), 101 ) --08/13/201712 13 select CONVERT(varchar(12) , getdate(), 103 ) --13/08/201714 15 select CONVERT(varchar(12) , getdate(), 104 ) --13.08.201716 17 select CONVERT(varchar(12) , getdate(), 105 ) --13-08-201718 19 select CONVERT(varchar(12) , getdate(), 106 ) --13 08 201720 21 select CONVERT(varchar(12) , getdate(), 107 ) --08 13, 201722 23 select CONVERT(varchar(12) , getdate(), 108 ) --03:57:3924 25 select CONVERT(varchar(12) , getdate(), 109 ) --08 13 2017 26 27 select CONVERT(varchar(12) , getdate(), 110 ) --08-13-201728 29 select CONVERT(varchar(12) , getdate(), 113 ) --13 08 2017 030 31 select CONVERT(varchar(12) , getdate(), 114 ) --03:58:08:20032 33 select getdate() --2017-08-13 03:58:48.66034 35 select convert(char(8),getdate(),112) --2017081336 37 select convert(char(8),getdate(),108) --03:58:4838 39 select convert(char(8),getdate(),112) --20170813
參考表:
3 參考文獻
【01】https://msdn.microsoft.com/zh-cn/library/bb399172(v=vs.110).aspx
【02】https://technet.microsoft.com/zh-cn/library/ms187928(v=sql.105).aspx
4 著作權
- 感謝您的閱讀,若有不足之處,歡迎指教,共同學習、共同進步。
- 博主網址:http://www.cnblogs.com/wangjiming/。
- 極少部分文章利用讀書、參考、引用、抄襲、複製和粘貼等多種方式整合而成的,大部分為原創。
- 如您喜歡,麻煩推薦一下;如您有新想法,歡迎提出,郵箱:[email protected]。
- 可以轉載該部落格,但必須著名部落格來源。
【Sqlserver系列】CAST和CONVERT