古詩詞大全網 - 成語用法 - SQL SERVER中強制類型轉換cast和convert的區別

SQL SERVER中強制類型轉換cast和convert的區別

SQL中cast 和convert都是用來將壹種數據類型的表達式轉換為另壹種數據類型的表達式。CAST 和 CONVERT 提供相似的功能,只是語法不同。

在時間類型轉化中壹般用到convert,因為它比cast多加了壹個style,可以轉化成不同時間的格式。

壹、使用語法:?

1、CAST ( expression AS data_type )

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

參數說明:

expression:是任何有效的表達式。

data_type:目標系統所提供的數據類型,包括 bigint 和 sql_variant。不能使用用戶定義的數據類型。

length:nchar、nvarchar、char、varchar、binary 或 varbinary 數據類型的可選參數。

style:日期格式樣式,借以將 datetime 或 smalldatetime 數據轉換為字符數據(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數據類型);或者字符串格式樣式,借以將 float、real、money 或 smallmoney 數據轉換為字符數據(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數據類型)。

二、腳本示例

select?CAST('1234'?as?int)--?1234

select?CONVERT(int,?'1234')?--?1234?

select?CAST(123.4?as?int)--?123

select?CONVERT(int,?123.4)?--?123?

select?CAST('123.4'?as?decimal)?--?123

select?CONVERT(decimal,?'123.4')?--?123?

select?CAST('123.4'?as?decimal(9,2))?--?123.40

select?CONVERT(decimal(9,2),?'123.4')?--?123.40?

declare?@Num?moneyset?@Num?=?1234.56

select?CONVERT(varchar(20),?@Num,?0)?--?1234.56

select?CONVERT(varchar(20),?@Num,?1)?--?1,234.56

select?CONVERT(varchar(20),?@Num,?2)?--?1234.5600

CONVERT(VARCHAR(19),GETDATE())?--Dec?29?2016?11:45?PM

CONVERT(VARCHAR(10),GETDATE(),110)?--12-29-2016?

CONVERT(VARCHAR(11),GETDATE(),106)?--29?Dec?16

CONVERT(VARCHAR(24),GETDATE(),113)?--29?Dec?2016?16:25:46.635

三、convert函數的style參數說明

1、時間style

2、float 和 real 樣式

3、money 和 smallmoney 樣式