delphi5.0连接到MSSQL7.0,MSSQL 有一“custom”字段,Varchar型,怎样达到如下查询结果:
对话框上有一edit输入框,在输入框中输入:南京 张,然后按下“确定”按钮后,
则查找到“custom”字段值中含有“南京”和“张”的数据,显示完全符合的记录后
面是符合含有“南京”的记录,再后面是符合含有“张”的记录比如数据库(mytable)中该字段值如下:
南京刘德华---------(部份符合)
江苏南京张海生-----(完全符合)
南京海汇张位军-----(完全符合)
南京李志明---------(部份符合)
福建陈万万
广东谢庭蜂
江西张志东---------(部份符合)
江苏南京张柏芝-----(完全符合)则查询结果应是:
江苏南京张海生
南京海汇张位军
江苏南京张柏芝
南京刘德华
南京李志明
江西张志东类似www.Google.com上查找的功能,怎样写SQL语句?
不一定只输两个查询条件 ,也可能用户输入:南京 张 9月,用户随便输只要有合条件
便显示

解决方案 »

  1.   

    作一存储过程,实现以下代码:
    1、创建一临时表,(custom , 分数)
    2、把正式表中完全符合条件的记录 插入到临时表中,并且“分数”赋为 0 分
    做一循环
    3、把符合第N(N从1开始)个条件的记录 插入到临时表中,并且“分数”赋为 N 分......4、最终按分数从低到高排
      

  2.   

    动态截断字符,组成SQL条件语句为 WHERE (CUSTOM LIKE '%南京%' OR CUSTOM LIKE '%张%')
      

  3.   

    先将查询单词分成独立的单词,比如将“南京 张 9月”分成三个词“南京”,“张”,“9月”。然后采用循环嵌套查询语句生成结果,比如下面的语句:create table tmp1(custom Varchar(255));
    create table tmp2(custom Varchar(255));
    delete from tmp1;
    insert into tmp1 select custom from mytable where custom LIKE '%南京%';
    delete from tmp2;
    insert into tmp2 select custom from tmp1 where custom LIKE '%张%';
    delete from tmp1;
    insert into tmp1 select custom from tmp2 where custom LIKE '%9月%';单词有多少可以循环多少次。用两个中间表做数据暂存。这样,问题应该可以解决。