不会吧,Varchar不会补空格的,char才会

解决方案 »

  1.   

    如果:
    select * from class where name ='1234            '
    才能找到你要的记录,说明问题不在ADOQuery,应该在SQL Server中。你在查询分析器中试试。我没遇到这样的问题,就是 char(20),也不需要补空格。
      

  2.   

    我也试了:ADO+MS SQL Server 7.0
    定义了一个表,且输入了几个记录:
        zd1       char    10
        zd2       char    10用ADODataset1+ DBGrid1:void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        String zd1=ADODataSet1->FieldByName("zd1")->AsString;
        String zd2=ADODataSet1->FieldByName("zd2")->AsString;
        ShowMessage(zd1.Length());
        ShowMessage(zd2.Length());  // 验证字符长度
    }
    zd1 长度总显示10,说明char类型是定长串;
    zd2 长度不断变化,说明varchar 是变长串;
    varchar代替char 就行了!
    你说varchar 是定长,我就不信了;
      

  3.   

    sorry,写错了:
      zd1      char     10
      zd2      varchar  10
      

  4.   

    真的找不到原因,就用LTRIM和RTRIM将空格去掉,先解决问题再说!
    'select * from class where Ltrim(rtrim(name)) ='+'1234'
      

  5.   

    如果按showsky的方法,那问题就大了。因为要从数据库中查到一些数据,再进行查找相关数据。查找时要加上空格,还是用模糊查询?我看此法不可取
      

  6.   

    TO:SOFTER如你觉得SHOWSKY方法不可取,你可用这样方法供你参考就是你可以计算实际的字符长度(非空格),然后产生select * from tabel where name=非空格的字符+((字段长度-非空格的字符长度)个空格)
      

  7.   

    我也遇到过这个问题,解决方法跟showsky的方法类似,来硬的.