MSSQL 表中一字段定义为varchar(128)类型,在求len的时候死活都是128长度,ltrim、rtrim都使用过了,求解,谢谢各位。

解决方案 »

  1.   

    求len的时候死活都是128长度!一般不会有这样的情况发生的!你把128改更大一点看看什么情况!
      

  2.   

    是不是你的存放的长度确实是128字节?
    你的SQL语句呢?
      

  3.   

    该字段里面的内容是不是真的有这么大,如果有这么大,你用ltrim,rtrim都没用的。
      

  4.   

    楼主预计出来的len应该是多少
      

  5.   

    谢谢各位,很简单的语句就像这样 SELECT LEN(FIELDNAME) FROM TABLENAME我返回所有行,并将该字段值复制到UE看到的内容就那么点字符,内容没空格没TAB,不可能有128那么长。看看还有什么办法,谢谢各位。
      

  6.   

    是否有char(13)/char(10)/char(9)存在
    用len(replace(replace(replace(column,char(13),''),char(10),''),char(9),''))--看看字符數
      

  7.   


    改为256,求LEN还是128,我返回所有行在该字段里面用鼠标可以拖出一个黑条子来,不知道是什么字符,SELECT出来不可见的,我怎么看该字段所有的值?
      

  8.   


    谢谢,是128,里面确实是128个字符,但不知道是什么字符,能不能看这些不可见的ASCII值?
      

  9.   

    如果说字段长度是128,那么我单纯的SELECT FIELDNAME FROM TABLENAME的时候,为什么查询分析器里面才显示10来个字符的宽度呢?没人在吗,帮我顶下啊,谢谢了。
      

  10.   

    模糊,返回一下结果
    select a.name,a.max_length,b.name
    from sys.columns a
    join sys.types b on a.user_type_id =b.user_type_id
    where object_name(object_id)= 'TABLENAME' and a.name ='FIELDNAME'
      

  11.   

    返回一下结果2:
    select DATALENGTH(CAST(FIELDNAME AS NVARCHAR)) FROM TABLENAME
      

  12.   

    严重感谢各位,问题已解决,字段中存在CHAR(0)字符,所以长度有问题。
      

  13.   

    http://topic.csdn.net/t/20031023/19/2388336.html
      

  14.   

    ASCII字符中从0x00到0x20这些不可见字符是很扰人的。想要看清楚一段字符串的本质:
    方法一:SELECT string, CAST(string AS varbinary(max)) FROM table,查看其二进制形式。
    方法二:一款好的文本编辑器可以显示各种不可见字符的区别,如Vim。把这段字符串复制/粘贴到Vim即可。
      

  15.   

    len函数本身会自动去除右侧的半角空格,如果存在全角下的空格那就不能去掉了。楼主看看是不是由全角的字符存在呀?
      

  16.   

    select top 100 ascii(right(column,1)) from table查看下是否存入的时候有多余的字符