Cast和Convert函數都是用來進行資料格式轉換的,使用頻率還是很高的,記錄下來以備檢視。
在大部分情況下,兩者執行的功能相同,不同的是convert還提供了一些特别的日期格式轉換,而cast沒有這個功能。
既然convert包括了cast的所有功能,而且convert還能進行日期轉換,那麼為什麼需要使用cast呢?實際上,這是為了ANSI/ISO相容。cast是ANSI相容的,而convert則不是。
文法:
cast(expression as data_type[(length)])
convert(data_type[(length)],expression[,style])
示例:
//在将varchar值'Guo'轉換成資料類型 int 時失敗
select 'Guo'+
//輸出Guo1
select 'Guo'+cast( as varchar)
//輸出Guo1
select 'Guo'+CONVERT(varchar,)
//輸出13.14
select CAST( as decimal(,))
//輸出13.14
select CONVERT(decimal(,),)
cast和convert都能轉換時間:
//輸出2016-02-02 00:00:00.000
select CONVERT(datetime,'2016-02-02')
//輸出2016-02-02 00:00:00.000
select CAST('2016-02-02' as datetime)
但是時間轉換字元串,cast不如convert花樣多:
//輸出23-10-16
select CONVERT(varchar,getdate(),)
//輸出10/23/16
select CONVERT(varchar,getdate(),)
//輸出16/10/23
select CONVERT(varchar,getdate(),)
//輸出2016/10/23
select CONVERT(varchar,getdate(),)
//10 23 2016 9:12PM
select CAST(GETDATE() as varchar)