导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

更新的问题

aqlover 2007-12-24 01:24:57
sql server 2005 中

update tbl set b=substring(a,1,16)

其中 b char(16)
a varchar(32) 有些记录不到16个长度
更新时报错:

消息 8152,级别 16,状态 14,第 2 行
将截断字符串或二进制数据。
语句已终止


使用
update tbl set b=convert(char(16),substring(a,1,16)) 搞定

难得varchar 和char 之间还要转换?请高手解释一下。
...全文
49 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wzy_love_sly 2007-12-24
mark 晕
回复
yzjdonald 2007-12-24
mark
回复
aqlover 2007-12-24
left绝对不行,报同样的错,还是得convert

只是想知道为什么?什么原因?
回复
wzy_love_sly 2007-12-24
改nchar(16)
回复
wzy_love_sly 2007-12-24
有中文
回复
wzy_love_sly 2007-12-24
应该不会这样
回复

Try:

update tbl set b=left(a,16)


回复
用left(a,16)不行吗?
回复
实际执行:
update tbl set b=convert(char(16),substring(a,1,16))
--〉
update tbl set b=substring(convert(char(32),a),1,16)



回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告