SQLSERVER中强制类型转换cast和convert的区别

将一种数据类型的表达式显式转换为另一种数据类型。
CAST和CONVERT提供类似的功能。
语法CAST使用:CAST(expressionASdata_type)CONVERT使用:CONVERT(data_type[(length)],expression[,style])参数表达式是任何有效的MicrosoftSQLServer"表达式。
有关详细信息,请参阅表达式。
目标系统提供的数据类型,包括h3int和sql_variant请参阅日期时间或小日期时间数据作为字符数据的数据类型(nchar、nvarchar、char、Binary或Varbinary数据类型样式用于转换为varchar、nchar或nvarchar数据类型的日期格式样式;用于将float、real、money或smallmoney数据转换为字符数据的公式(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)有关可用数据类型的更多信息,请参阅日期格式样式,它可转换datetime或smalldatetime数据。
转换字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)转换float、real、money或smal将almoney数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)当转换为另一种数据类型时,隐式转换对用户来说是不可见的,例如,如果sm.int变量与int变量进行比较,并且在比较之前将smallint变量显式转换为int变量。
CAST和CONVERT函数将值从数据类型(局部变量)转换。
列或其他表达式)转换为另一种数据类型,例如,以下CAST函数。
将值$157.27转换为字符串''$157.27'':CAST($157.27ASVARCHAR(10))CAST函数基于SQL-92标准,并且在从一种SQLServer对象数据类型转换为另一种显式数据类型时优先于CONVERT不支持数据类型转换。
例如,nchar值根本无法转换为图像值。
nchar只能显式转换为二进制,不支持隐式转换为二进制。
nchar可以显式或隐式转换为nvarchar。
使用sql_variant数据类型时,SQLServer支持将对象隐式转换为sql_variant类型以及其他数据类型。
但是,SQLServer不支持从sql_variant数据到其他数据类型的对象的隐式转换。

SQL数据类型转换

在SQL中,当执行涉及不同数据类型的操作时,例如使用“+”或“||”或使用concat函数进行字符串连接或数值计算时,我们建议您首先执行类型转换。
以下示例展示了如何在各种数据库系统上执行此操作。
假设您需要将字符串“678”转换为数值数据并将其添加到值123。
ACCESS使用以下方法:sqlSELECTCAST('678'ASINT)+123ASResult;对于SQLSERVER,使用相同的方法。
sqlSELECTCAST('678'ASINT)+123ASResult;ORACLE使用类似的语法。
qlSELECTTO_NUMBER('678')+123ASResultFROMDUAL;在MYSQL中,操作为:sqlSELECTCAST('678'ASINT)+123ASResult;如果数据类型为十进制,请使用与您的数据库对应的十进制类型。
防止小数点被截断。
例如,连接数字列ord和字符串列place。
在ACCESS中,拼接操作如下:sqlSELECTord+''+placeASCombinedFROMYourTable;在SQLSERVER中,执行相同的操作:在ORACLE中,操作如下:sqlSELECTord||''||placeASCombinedFROMYourTable;在MYSQL中,执行拼接如下:sqlSELECTCONCAT(ord,'',place)ASCombinedFROMYourTable;换句话说,数据类型转换是确保SQL操作正确执行的重要步骤,尤其是在混合时。
数据类型是时间。
正确使用类型转换函数可以帮助避免数据丢失和错误,并保证计算和运算的准确性。

SQLSERVER中强制类型转换cast和convert的区别

CAST和CONVERT都经常使用。
单独提取为文本以便于搜索。

CAST和CONVERT都可以转换数据类型。
大多数情况下,两者执行相同的功能,区别在于CONVERT提供了一些特殊的日期格式转换,而CAST则没有。

既然CONVERT包含了所有CAST函数,并且CONVERT可以进行日期转换,为什么还需要使用CAST呢?CAST与ANSI兼容,而CONVERT则不兼容。

语法:

CAST(语句ASdata_type[(length)])convert(数据类型[(length)],表达式[,style])

示例:

'AB'+1--此select语句报告错误和varchar值无法将'AB'转换为int数据类型SELECT'AB'+CAST(1ASvarchar)--outputAB1SELECT'AB'+CONVERT(varchar,1)--outputAB1

CASTANDCONVERT两者都可以转换时间:

SELECTCONVERT(date,2011-07-11')--result2011-07-1100:00:00.000CSELECTAST('2011-07-11'ASDateTime)--RESULT2011-07-1100:00:00.000

但是要转换时间字符串,CAST不会有很多技巧,例如CONVERT:

SELECTCONVERT(varchar,GETDATE(),5)--output01-07-13SELECTCONVERT(varchar,GETDATE(),111)--结果2013/07/01CONVERT(varchar,GETDATE(),1)--结果07/01/13SELECTCAST(GETDATE()ASvarchar)--输出07120139:56PM