Cast类型转换字符过长可能被截断

在使用Cast函数进行类型转换时,如果仅指定转换类型而没有指定长度,字符过长可能被截断。

例:

select cast(',1,2,3,4,8,9,10,11,12,13,14,15,16,17,18' as varchar)

结果:',1,2,3,4,8,9,10,11,12,13,14,15'

 

select cast(',1,2,3,4,8,9,10,11,12,13,14,15,16,17,18' as varchar(50))

结果:',1,2,3,4,8,9,10,11,12,13,14,15,16,17,18'

 

 

select SQL_VARIANT_PROPERTY(cast(',1,2,3,4,8,9,10,11,12,13,14,15,16,17,18' as varchar(50)),'MaxLength')

 

发现查询中默认该类型最大长度为30。

 

联机帮助相关说明:

 

大值数据类型表现出与小值数据类型相同的隐式和显式转换行为,特别是 varchar、nvarchar 和 varbinary 数据类型。但是,应该考虑以下原则:

  • 从 image 到 varbinary(max) 的转换与反向转换是隐式转换,text 与 varchar(max)、ntext、nvarchar(max) 之间的转换也是隐式转换。
  • 从大值数据类型(如 varchar(max))到小值数据类型(如 varchar)的转换是隐式转换,但如果大值相对于指定长度的小值数据类型显得太大,则产生截断。
  • 从 varchar、nvarchar 或 varbinary 到其相应的大值数据类型的转换都是隐式执行的。
  • 从 sql_variant 数据类型到大值数据类型的转换是显式转换。
  • 大值数据类型不能转换为 sql_variant 数据类型。

截断结果和舍入结果

将字符或二进制表达式(char、nchar、nvarchar、varchar、binary 或 varbinary)转换为其他数据类型的表达式时,可截断数据,仅显示部分数据,或返回错误(因为结果太短而无法显示)。除了下表显示的转换,其他到 char、varchar、nchar、nvarchar、binary 和 varbinary 的转换都将被截断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值