我有一个表t_bom,其中有一个字段pn在数据库中有一个字段为10,现在想改为11位,注(pn varchar(20)),如pn为atx12345678901想改为tx123456789011,用什么语句来写,我这样更改不了.UPDATE t_BOM
SET pn = LEFT(pn, 9) + '1' + RIGHT(pn, 1)
有什么办法可以在sqlserver中修改,谢谢!!

解决方案 »

  1.   

    declare @str table(pn varchar(20))
    insert into @str select 'atx12345678901'
    insert into @str select 'atx1234trtetrh'
    insert into @str select 'atxewqefweqqq8'UPDATE @str
    SET pn = substring(pn,2,12) + '1' + right(pn,1) select * from @str
    --是这样吗?
      

  2.   

    但我的表t_bom有10万行数,而且pn是其中的一个字段,我是想把pn的数据每行都在原有的基础上加一位1
      

  3.   

    用ALTER 命令呢
    ALTER TABLE 表名 ALTER COLUMN 列名
      

  4.   

    我用UPDATE t_BOM1
    SET pn = SUBSTRING(pn, 1, 13) + '1'+ RIGHT(pn, 1)
    但提示出错:
       服务器: 消息 8152,级别 16,状态 9,行 1
    将截断字符串或二进制数据。
    语句已终止。
    不知哪出错了我的pn定义的为varchar(20)
      

  5.   

    刚刚搞定
    UPDATE t_BOM1
    SET pn = SUBSTRING(pn, 1, 13) + '1'+ RIGHT(pn, 1)
    where len(pn)=10
    但不知道为么,我的pn字段全部都是10位数的,但不用where语句就更新不了,请大家帮忙解决一下,谢谢!