表里有列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.
请教!

解决方案 »

  1.   

    update TB1 
      set code=rtrim(code)+'_'
      

  2.   

    表的的code列长度应该没有varchar(10)请你确认一下.如果长度为10应该不会有字符串超过的报错.
      

  3.   

    update TB1 
    set code=ltrim(code)+'_'
      

  4.   

    update TB1 set code=case when len(code)>=10 then code else ltrim(rtrim(code))+'_' end
      

  5.   

    code列长度是varchar(10)
    用update TB1 
      set code=rtrim(code)+'_'
    或update TB1 
      set code=Ltrim(code)+'_'
    都提示上面的错误!
      

  6.   

    执行以下语句,查看是否有超长的数据.select CODE,datalength(left(CODE+'_',10))
     from TB1 
     where datalength(left(CODE+'_',10))>10
        or len(left(CODE+'_',10))>10
      

  7.   

    如果原来已经有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
      

  8.   

    当数值是中文时,LEN统计5个中文也是5!所以也出错!
      

  9.   

    update TB1 set code=case when datalength(code)>=10 then code else ltrim(rtrim(code))+'_' end
    就OK了,多谢大家!