我想用SQL语句通过关键词查询一个数据库的字段,输入若干个关键词,每个关键词之间用空格分开,但不知如何判断一共输入了多少个关键词?恳请高手指点一下!

解决方案 »

  1.   

    http://www.cnblogs.com/kfarvid/archive/2010/03/24/StringList.html可以用stringList 解决,上面供参考
      

  2.   

    在Delphi代码中先判断好。再多次查询
    Delphi中分割字符串函数ExtractStrings,分割的同时还可以去空字符串和去空白(可以自定义)。
    下面的例子是网上荡的,希望有用。WhiteSpace 参数指定每个子串开头被忽略的字符s。
    Content 参数就是被分割的“源”串了。
    Strings 参数用于接收分割后的各个子串。它的原有内容不会被清空。别忘了对Strings进行Create哦。
    另外,EctractStrings不会把空串放入Strings中去。举个例子吧:如果我想分割以下字符串: ABC|... DEF|#### GHI|"中华网URL|# www.china.com"希望得到下面四个字符串: 
    1、ABC
    2、DEF
    3、GHI
    4、中华网URL|# www.china.com
    那么可以用下面的代码:view plaincopy to clipboardprint?
                        
    uses Classes;    
    var
    ASource: PChar;
    AStr: String;
    ACount: Integer;
    AStrings: TStringList; 
    begin   
        ASource := 'ABC|...   DEF|#### GHI|"中华网URL|# <a href="http://www.china.com" target="_blank">www.china.com</a>"';    
        AStrings := TStringList.Create;    
        try   
           ACount := ExtractStrings(['|'], [' ','#','.'], ASource, AStrings);    
        {do any further processing}   
        //for AStr in AStrings do    
        //   Writeln(AStr);    
    finally   
         AStrings.Free;    
    end;    
                        
       Readln;    
    end.   
     
      

  3.   

    var
      s,s1:string;
      i,j:Integer;
    begin
      ListBox1.Items.Clear;
      s:='关键字1 关键字2 关键字3';
      while s<>'' do
      begin
        i:=Pos(' ',s);
        if i=0 then
        begin
          s1:=s;
          s:='';
        end
        else
        begin
          s1:=Copy(s,1,i-1);
          s:=Copy(s,i+1,Length(s)-i);
        end;
        ListBox1.Items.Add(s1)
      end;
    end;
      

  4.   

    TStrings的一个属性,D***Text,把你的字符串付给这个属性,然后取Count值,就知道了这个属性配套一个属性,默认是空格,所以你不用设置了,如果不是空格,就需要设置一下哪个配套的属性了,也是D开头的好运……
      

  5.   

    var
      StrList: TStringList;
    begin
      StrList := TStringList.Create;
      StrList.Delimiter := ' ';
      StrList.Delimiter := Str;