对数据,trim()之后,insert到数据库,发现空格还是没有过滤掉(空格已经确认不是“全角空格”),不知是为什么?是数据库字段格式不正确,还是什么原因?
  后,程序运行过程中,字符串显示:'12320%20%20%20%20%20%',原本应该是:'123'
  请大家帮忙~~~
  不甚感激~~~~~~~~

解决方案 »

  1.   

    确定你的字符串是什么
    确定数据库字段的类型VarChar
      

  2.   

    字符串的问题,数据字段用varchar就可以了.你把代码贴出来.
      

  3.   

    应该不是Trim的问题,可能是你的一些数据库的设置的问题,20%应该不是空格吧,呵呵
      

  4.   

    理论上Trim()不会有问题
    在insert处设断点,查看SQL的具体语句不就一目了然吗
    代码贴出来看看
      

  5.   

    代码没什么
    就是上库里面insert数据程序我跟了
    trim以后,显示数据符合要求,空格没了但是到表里面看,就多了好多空格

    我想是字段设置不正确,原来是nvarchar类型估计问题就在这里
      

  6.   

    trim以后,显示数据符合要求,空格没了
    ---------
    这就应该是保存数据的时候出现的毛病了,Trim应该没事的...
      

  7.   

    begin
      edit;
      fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)));
      showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格
      post;
    end;
      

  8.   

    那么这个数据就应该post到表中了吧,
    可是回到表中,一看长了一大截~~~~
      

  9.   

    是不是你的字段类型用的CHAR型?
      

  10.   

    请问
    varchar & nvarchar有什么区别?
      

  11.   

    nvarchar:可变长度 Unicode 字符数据
    varchar:可变长度且非 Unicode 的字符数据
      

  12.   

    <<gzmhero,你好
    虽说,nvarchar的字节存储大小是所输入字符个数的两倍,但不会存储的是‘123                ’(后面是空格)这样子的把?
    基础不好,请指教~
    不胜感激~~~
      

  13.   

    不是trim的问题吧,你在trim之前对字符串进行了url编码是么?空格转换成20%,trim不掉的,和数据库也没关系
      

  14.   

    虽说,nvarchar的字节存储大小是所输入字符个数的两倍,但不会存储的是‘123                ’(后面是空格)这样子的把?
    基础不好,请指教~
    不胜感激~~~
      

  15.   

    begin
      showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//先看看show出来的数据是什么样子的?
      edit;
      fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)));
      showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格
      post;
    end;
      

  16.   

    comerliang,你好show出来的是这:‘123                               ’;带很多空格,
      

  17.   

    搞不清楚了,你试试sunmingdong() 的思路吧
      

  18.   

    看情况好象是post的问题,没有post成功吧,你试试这样:
    edit;
    fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)))+'testtttt';
    post;看post后的数据后面是否出现了testtttt,如果没有就说明没有post成功。
      

  19.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        ADOTable1.First;
        Showmessage(inttostr(length(ADOTable1.Fields[4].AsString)));
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        with ADOTable1 do
        begin
            First;
            Edit;
            FieldByName('brokerNo').AsString := trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)));
            post;
        end;
    end;brokerNo字段的类型是nvarchar,初始的值是:"123        "
    点Button1,再点Button2,再点Button1
    showmessage()的结果
    第一次是17
    第二次是3
      

  20.   

    comerliang,你好
    单独照你的,作了一个,没问题,正确但是我想不明白,begin
      edit;
      fieldbyname('brokerNo').asstring:=trim(copy( fieldbyname('brokerNo').asstring,pos('@', fieldbyname('brokerNo').asstring)+1,length(fieldbyname('brokerNo').asstring)-pos('@', fieldbyname('brokerNo').asstring)));
      showmessage(dm2.cdsImportSource.DataSet.fieldbyname('brokerNo').AsString);//show出来的数据已经没有空格,为什么没post上去呢??
      post;
    end;
      

  21.   

    begin前的with xxx
    可能是你的xxx在上下文中有其它的引用了吧不知道这么说你能不能看明白