永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-11-28 09:17
SQL SERVER中强制类型转换cast和convert的区别
最佳答案
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。 语法
使用 CAST: CAST ( expression AS data_type ) 使用 CONVERT: CONVERT (data_type[(length)], expression [, style]) 参数
expression 是任何有效的 Microsoft SQL Server" 表达式。有关更多信息,请参见表达式。 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 数据类型)。

将某种数据类型的表达式显式转换为另一种数据类型。有关可用的数据类型的更多信息,请参见数据类型。日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。当转换为字符数据时输出。
隐性转换对于用户是不可见的。
SQL Server 自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个 smallint 变量和一个 int 变量相比较,这个 smallint 变量在比较前即被隐性转换成 int 变量。 显式转换使用 CAST 或 CONVERT 函数。
CAST 和 CONVERT 函数将数值从一个数据类型(局部变量、列或其它表达式)转换到另一个数据类型。例如,下面的 CAST 函数将数值 $157.27 转换成字符串 ''$157.27'':CAST ( $157.27 AS VARCHAr(10) )
CAST 函数基于 SQL-92 标准并且优先于 CONVERT。 当从一个 SQL Server 对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar 数值根本就不能被转换成 image 数值。nchar 只能显式地转换成 binary,隐性地转换到 binary 是不支持的。nchar 可以显式地或者隐性地转换成 nvarchar。 当处理 sql_variant 数据类型时,SQL Server 支持将具有其它数据类型的对象隐性转换成 sql_variant 类型。然而,SQL Server 并不支持从 sql_variant 数据隐性地转换到其它数据类型的对象
全部回答
在SQL SERVER中,cast和convert函数都可用于类型转换,其功能是相同的,
只是语法不同.
cast一般更容易使用,convert的优点是可以格式化日期和数值.

代码
select CAST('123' as int) -- 123
select CONVERT(int, '123') -- 123

select CAST(123.4 as int) -- 123
select CONVERT(int, 123.4) -- 123

select CAST('123.4' as int)
select CONVERT(int, '123.4')
-- Conversion failed when converting the varchar value '123.4' to data type int.

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 money
set @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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
gray的中文意思
梦幻西游手游大唐不花钱可以玩起来吗
单选题马克思说:“在一个国家里,只有超过国
单选题已知有10包相同数量的饼干,若将其中1
0.968÷5.9=()÷()
市面上看到有各种上翻侧翻盖的 哪种洗衣机好
在汽车站附近开快餐,什么店最好?
荣华数码婚纱摄影地址有知道的么?有点事想过
单选题下列各组词语中没有错别字的一组是A.伫
断桥铝门窗价格很贵么
6.3乘9分之7等于多少? 简便方法
拉格朗日定理的数论
50万闲钱,想做一个长期理财。要安全一点的
市财政局的财务职位是做什么工作?
有女主是苏千雪的小说
推荐资讯
天长地久国际婚纱摄影城怎么去啊,我要去那办
双雄网吧地址在哪,我要去那里办事,
电吉他除了弹摇滚还能弹什么类型的音乐?
海天的耗油大桶的多少钱
夫妻二人一个先死,一个后死,后死的人马上不
2013年3月1日尼古拉斯凯奇主演上线的《劫案迷
35千克加上它的百分之多少等于42
发令弹的与哪种开口射钉弹的威力相近
山字头下面是人在加三撇是个什么字
香水怎么使用才正确?我在网上看到了七点法和
铁路桥梁涂刷水标尺的标准??
二次结构是什么意思?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?