我在Sql Server 2000上是可以的,你试着把你表中的数据写出几个来,让大家试试看

解决方案 »

  1.   

    我执行这句不出问题啊!
    UPDATE 表A SET 字段1 = left(字段2,18)  WHERE 字段2 IS NOT NULL AND 字段2<>''
      

  2.   

    如果是nvarchar,应该没问题,估计是有汉字之类
      

  3.   

    我测试了一下,left 函数取的是字符的个数,而varchar型的字段长度是指存储长度,例如字符串“0123456789我爱北京啊”是15个字符,占用20个字节。left('0123456789我爱北京啊',12) = '0123456789我爱' 而'0123456789我爱' 是14个字节
      

  4.   

    NewQger(Q哥):你将前面的数字个数变为奇数个就出错了啊,截断汉字了,呵呵
      

  5.   

    用nvarchar类型的长度是指字符的个数,改成这个类型就没问题了
      

  6.   

    left取的是左边的字符的个数,奇偶都一样
      

  7.   

    哦,我是说varchar类型的时候的确会出错
      

  8.   

    DECLARE @AA AS VARCHAR(10)
    SET @AA = '012456789中华人民共和国'
    SELECT LEFT(@AA,12)返回了 '0123456789'为什么会这样!!!!!!!!!!!!!!!
      

  9.   

    DECLARE @AA AS VARCHAR(10)   --@AA 才10
      

  10.   

    在表设计中 varchar型的字段长度是指存储长度 nvarchar类型的长度是指存储字符串的长度
    一个varchar(20)的可以存放20个单字节字符,或10个双字节字符,一个nvarchar(20)类型的可以存放20个字符不管是单字节字符还是双字节字符。拼音字母,阿拉伯数字,半角的符号是单字节字符,汉字和全角符号是双字节字符。
    left类字符串函数操作的是字符个数而不是字符的存储长度。
      

  11.   

    to : baso1623(baso) 
    DECLARE @AA AS VARCHAR(10)  ----你在这设长度为10 在付值时已经被截取了
    SET @AA = '012456789中华人民共和国'
    select @AA  --将返回 '0123456789'
    SELECT LEFT(@AA,12)  --当 @AA 的字符个数小于给定的12时取全部字符
      

  12.   

    实践证明 VARCHAR 长度不 10
    无法放入5个以上汉字
    ——————————————————
    虽然分很少,还是结贴吧,谢谢大家:)