读书人

UPDAT有关问题

发布时间: 2013-09-28 10:01:20 作者: rapoo

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

读书人网 >SQL Server

热点推荐