更新的问题

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 之间还要转换?请高手解释一下。
...全文
99 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
应该不会这样
昵称被占用了 2007-12-24
  • 打赏
  • 举报
回复

Try:

update tbl set b=left(a,16)


桃花岛黄岛主 2007-12-24
  • 打赏
  • 举报
回复
用left(a,16)不行吗?
昵称被占用了 2007-12-24
  • 打赏
  • 举报
回复
实际执行:
update tbl set b=convert(char(16),substring(a,1,16))
--〉
update tbl set b=substring(convert(char(32),a),1,16)



34,871

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧