Sql server cast的好处是什么

Sql server cast的好处是什么,sql-server,Sql Server,cast()的好处是什么 提前感谢,, Nishant卡的数据类型最初可能未设置为varchar(10)Cast()Cast()有助于在此处将列显式设置为varchar(10)。如果不使用Cast,将得到数据类型为INT的列 SELECT Grp_number ,Mobile ,cast(NULL AS VARCHAR(10)) Card -- VARCHAR(10) FROM PROFILE WHERE country = 'United Arab Emirates

cast()的好处是什么

提前感谢,,
Nishant

卡的数据类型最初可能未设置为
varchar(10)
Cast()
Cast()
有助于在此处将列显式设置为varchar(10)。

如果不使用
Cast
,将得到数据类型为
INT
的列

SELECT Grp_number
    ,Mobile
    ,cast(NULL AS VARCHAR(10)) Card       -- VARCHAR(10)
FROM PROFILE
WHERE country = 'United Arab Emirates'

SELECT Grp_number
    ,Mobile
    ,NULL Card                            -- INT
FROM PROFILE
WHERE country = 'United Arab Emirates';

这可能会导致数据类型映射(ORM/SSIS/报告工具)出现问题。

如果不使用
CAST
您将得到数据类型为
INT
的列

SELECT Grp_number
    ,Mobile
    ,cast(NULL AS VARCHAR(10)) Card       -- VARCHAR(10)
FROM PROFILE
WHERE country = 'United Arab Emirates'

SELECT Grp_number
    ,Mobile
    ,NULL Card                            -- INT
FROM PROFILE
WHERE country = 'United Arab Emirates';

这可能会导致数据类型映射(ORM/SSIS/报告工具)出现问题。

若要将列
卡的数据类型设置为
varchar(10)
@Squirrel,则上面的查询与下面的查询有什么区别:选择Grp\u number,Mobile,来自profile的null Card,其中country='United Arab Emirates'这两个查询将返回相同的结果,因为
Card
列不用于任何其他比较。如果未使用
cast()
,则
card
列将具有它最初拥有的数据类型,而不是
varchar(10)
对于
NULL card
,数据类型未定义,某些客户端可能无法确定数据类型。对于select into example
select NULL Card into table_name
,它将默认为
integer
。使用
CAST()
,数据类型与您在
CAST()
中定义的数据类型相同,以将列
Card
的数据类型设置为
varchar(10)
@Squirrel那么上面的查询与下面的查询有什么区别:选择Grp\u number,Mobile,来自profile的null Card,其中country='United Arab Emirates'这两个查询将返回相同的结果,因为
Card
列不用于任何其他比较。如果未使用
cast()
,则
card
列将具有它最初拥有的数据类型,而不是
varchar(10)
对于
NULL card
,数据类型未定义,某些客户端可能无法确定数据类型。对于select into example
select NULL Card into table_name
,它将默认为
integer
。使用
CAST()
,数据类型与您在
CAST()
中定义的数据类型相同,这是正确的,可以很容易地证明:
exec sp\u descripe\u first\u result\u set@tsql=N'SELECT NULL as x'
vs
exec sp\u descripe\u first\u result\u set@tsql=N'SELECT CAST(NULL as VARCHAR(10))作为x'
这是正确的,并且可以很容易地证明:
exec sp\u description\u first\u result\u set@tsql=N'选择NULL作为x'
vs
exec sp\u description\u first\u result\u set@tsql=N'选择cast(NULL作为VARCHAR(10))作为x'