我现在已有表A
表中字段如:
A1 VARCHAR(50),
A2 VARCHAR(50)然我现在需要把A2都改成VARCHAR(20),于是我执行SQL语句:
alter   table A  alter   column  A2 varchar(20)出错:
如下:
消息 8152,级别 16,状态 14,第 1 行
将截断字符串或二进制数据。
语句已终止。发现是已有数据字符太长
于是我执行.
update A
set A2=left(A2,20)
强行把现有数据缩为20位.再次执行SQL:
alter   table A  alter   column  A2 varchar(20)错误依旧.SOS哪位高人帮帮忙我?

解决方案 »

  1.   

    因为一个汉字要占两位
    alter  table tb  alter  column  A2 nvarchar(20) 
      

  2.   

    update tablea 
    set A2=convert(varchar(20),A2) 
    go
      

  3.   

    NO.找到问题了.问题解决啊.
    关键在于
    update A 
    set A2=left(A2,20) 
    我从左取得20位.付给它.
    其实A2的长度并没有减少.
    VARCHAR的特性是自动增长.但不会缩短.
    于是我改成了.
    update A
    set A2=convert(varchar(20),A2)强行转换成20位.
    再修改字段长度就成功了.谢谢回贴!