UPDAT问题

sunfor 2013-09-24 10:56:55
表里有列CODE,VARCHAR(10)
现我想在这列的值后面加一个'_'
code
001
002

code
001_
002_

用update TB1 set code=left(code+'_',10)
出现:
Server: Msg 8152, Level 16, State 9, Line 6
String or binary data would be truncated.
The statement has been terminated.
请教!
...全文
248 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2013-09-25
  • 打赏
  • 举报
回复
表的的code列长度应该没有varchar(10)请你确认一下.如果长度为10应该不会有字符串超过的报错.
xiaoxiangqing 2013-09-25
  • 打赏
  • 举报
回复
超过长度了。
sunfor 2013-09-25
  • 打赏
  • 举报
回复
update TB1 set code=case when datalength(code)>=10 then code else ltrim(rtrim(code))+'_' end 就OK了,多谢大家!
sunfor 2013-09-25
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
update TB1 set code=case when len(code)>=10 then code else ltrim(rtrim(code))+'_' end
当数值是中文时,LEN统计5个中文也是5!所以也出错!
Andy__Huang 2013-09-25
  • 打赏
  • 举报
回复
如果原来已经有10位,那么再加"_"就变成11位,应该这样
--查询
select * from TB1 where len(code) in(select max(len(code)) from tb1)
--看看最大长度是多少?



--更新
update TB1 
set code=ltrim(rtrim(code))+'_'
where len(code)<10
sunfor 2013-09-25
  • 打赏
  • 举报
回复
引用 9 楼 ap0405140 的回复:
执行以下语句,查看是否有超长的数据.

select CODE,datalength(left(CODE+'_',10))
 from TB1 
 where datalength(left(CODE+'_',10))>10
    or len(left(CODE+'_',10))>10
用这个找出这个值: 四楼模切厂 本来是10位长度,为何出来的结果是11?
sunfor 2013-09-25
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
update TB1 set code=case when len(code)>=10 then code else ltrim(rtrim(code))+'_' end
用这个一样出现上面提示错误,不知为何!
唐诗三百首 2013-09-25
  • 打赏
  • 举报
回复
执行以下语句,查看是否有超长的数据.

select CODE,datalength(left(CODE+'_',10))
 from TB1 
 where datalength(left(CODE+'_',10))>10
    or len(left(CODE+'_',10))>10
sunfor 2013-09-25
  • 打赏
  • 举报
回复
原来发现有一行值是10位长!!
sunfor 2013-09-25
  • 打赏
  • 举报
回复
code列长度是varchar(10) 用update TB1 set code=rtrim(code)+'_' 或update TB1 set code=Ltrim(code)+'_' 都提示上面的错误!
發糞塗牆 2013-09-25
  • 打赏
  • 举报
回复
update TB1 set code=case when len(code)>=10 then code else ltrim(rtrim(code))+'_' end
Landa_Peter 2013-09-25
  • 打赏
  • 举报
回复
update TB1 set code=ltrim(code)+'_'
Oraclers 2013-09-24
  • 打赏
  • 举报
回复
update TB1 set code=rtrim(code)+'_'
sunfor 2013-09-24
  • 打赏
  • 举报
回复
提示字符串太长!··

34,591

社区成员

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

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