1. 程式人生 > >【Sqlserver系列】CAST和CONVERT

【Sqlserver系列】CAST和CONVERT

數值 定義 內容 ros 如何 turn 標量 sdn 相同

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) --2017 10 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)   --2017
2  
3 SELECT CONVERT(INT,2017.3)   --2017
4 
5 SELECT CONVERT(INT,2017.3)   --消息 245,級別 16,狀態 1,第 1 行,在將 varchar 值 ‘2017.3‘ 轉換成數據類型 int 時失敗。
6 
7 SELECT CONVERT(decimal,2017.3)  --2017
8 
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.13
10  
11 select CONVERT(varchar(12) , getdate(), 101 )  --08/13/2017
12  
13 select CONVERT(varchar(12) , getdate(), 103 )  --13/08/2017
14  
15 select CONVERT(varchar(12) , getdate(), 104 )  --13.08.2017
16  
17 select CONVERT(varchar(12) , getdate(), 105 )  --13-08-2017
18  
19 select CONVERT(varchar(12) , getdate(), 106 )  --13 08 2017
20  
21 select CONVERT(varchar(12) , getdate(), 107 )  --08 13, 2017
22  
23 select CONVERT(varchar(12) , getdate(), 108 )  --03:57:39
24   
25 select CONVERT(varchar(12) , getdate(), 109 )  --08 13 2017  
26  
27 select CONVERT(varchar(12) , getdate(), 110 )  --08-13-2017
28  
29 select CONVERT(varchar(12) , getdate(), 113 )  --13 08 2017 0
30  
31 select CONVERT(varchar(12) , getdate(), 114 )  --03:58:08:200
32  
33 select getdate()  --2017-08-13 03:58:48.660
34  
35 select convert(char(8),getdate(),112)  --20170813
36  
37 select convert(char(8),getdate(),108)  --03:58:48
38  
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