sqlserver向nvarchar的字段中插入数据在写入的内容之后产生了大量的空格,这是为什么,怎么去除呀

解决方案 »

  1.   

    S := TrimRight(S); // 去掉一右空格
      

  2.   

    Select LTrim(RTrim(FieldA)) From TableA //左右空格全消灭
      

  3.   

    Select LTrim(RTrim(FieldA)) From TableA 
    还是不行呀,我取出来的值,计算长度为18,只有用trim才能去除,长度才会有为0,这是为什么呀,真奇怪sql语句为什么不能用trim呀
      

  4.   

    0 id_num numeric 9 0
    0 pmemodate char 20 1
    0 pmemo ntext 16 1就是这个pmemo字段,增加一条记录,pmemo不赋值时,就会出现上面那种情况
      

  5.   

    呵呵。 你说的字段数据类型不是NVARCHAR 而是 NTEXT。 其实不是空格 ,是一个16字节的指针, 指向的值为NULL。因为系统缺省设置TEXT IN ROW = OFF。 如果你不想要这种状况,你可以做如下工作:EXEC sp_tableoption 'YOURTABLE', 'text in row', 'ON'
    这样设置后,显示的数据行就是NULL值--------------------------------------详细的说明请参见SQLSERVER HELP
      

  6.   

    EXEC sp_tableoption 'YOURTABLE', 'text in row', 'ON'在哪里设置
      

  7.   

    是不是每次我的在查询前,都必须执行
    EXEC sp_tableoption 'YOURTABLE', 'text in row', 'ON'
      

  8.   

    是不是这
    0 pmemodate  char 20 1
    的问题
      

  9.   

    不是,
    是这个
    0 pmemo ntext 16 1
      

  10.   

    'select * from patient where pmemo is not null'
    可查询9条记录,但真有输入内容的只有三条
    其余的6条,是空的,
    最出来showmessage(inttostr(length(fieldbyname('pmemo').asstring)))是18
    有内容的长度,大于是18是不是这种数据类型的最小长度是18,可以sql语句不能写
    select * from patient where len(pmemo)>18
    会出错,类型不支持呀!郁闷死啦,快帮我想想办法,各位大侠
      

  11.   

    'select * from patient WHERE Ltrim(Rtrim(CONVERT(varchar(200), pmemo)))<>'''+''+'''''select * from patient WHERE len(CONVERT(varchar(200), pmemo))>18'都不行,还有没有其它办法,
      

  12.   

    你没有把NTEXT的数据类型搞清楚, 你把数据类型改为NVARCHAR好啦。