UPDAT问题
表里有列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.
请教!
------解决方案--------------------update TB1
set code=rtrim(code)+'_'
------解决方案--------------------表的的code列长度应该没有varchar(10)请你确认一下.如果长度为10应该不会有字符串超过的报错.
------解决方案--------------------update TB1
set code=ltrim(code)+'_'
------解决方案--------------------update TB1 set code=case when len(code)>=10 then code else ltrim(rtrim(code))+'_' end
------解决方案--------------------执行以下语句,查看是否有超长的数据.
select CODE,datalength(left(CODE+'_',10))
from TB1
where datalength(left(CODE+'_',10))>10
or len(left(CODE+'_',10))>10
------解决方案--------------------如果原来已经有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