日期:2014-05-19  浏览次数:20454 次

SQL高手请进,求一SQL语句(续)
昨天问题r的网址:
http://community.csdn.net/Expert/topic/5675/5675338.xml?temp=.8641779
里面的问题:
表一:
id       srotid     name       arr1     arr2    
101         10         A-001       1;         1;
102         10         A-002       1;2;     1;
103         11         A-003       3;         3;
104         11         A-004       4;         3;4;

表二:
id       text1                 text2
1         aaa;bbb;         ccc;ddd;
2         eee;fff;         ggg;hhh;

现在假如客户输入 "aaa "就可以搜索出以下纪录:(注:下面结果中的arr1、arr2里面所含有的1,就是表三中含有 "aaa "的ID号.)之前可能是我要求的功能太多了,反而乱了,现在只要可以出现以下的显示结果就行了:

id       srotid     name       arr1     arr2    
101         10         A-001       1;         1;
102         10         A-002       1;2;     1;


现在的数据库暂时为Access,所以SQL有一些函数用不上的.希望大虾们指点一下.
谢谢.

以上是昨天的问题.

昨天以为问题可以告一段落了,谁知昨晚一引用下面的模糊搜索就变得超慢了,一执行起来要19秒左右.但是这个模糊搜索又是必不可少的.
公司也下了最后的通告要我这个星期内搞定,好无奈.
paoluo、wangtiecheng、Haiwer、ORARichard等高手们
帮忙能不能再帮忙把这个语句优化一下,万分感谢。


****************模糊搜索字符串开结****************************
searchdata=replace(keywords, " ' ", "?? ")
searchdata=Rtrim(LTrim(searchdata))
sql1= " "  
sql2= " "  
sql3= " "  
searchdatatmp=split(searchdata, "   ")  
max=ubound(searchdatatmp)  
if   max=0   then  
sql1=sql1& "   B.name   like   '% "   &   searchdatatmp(i)   &   "% '   "
sql2=sql2& " '; '   +   C.text1   Like   '% '   +   ' "&   searchdatatmp(i)   & " '   +   '% '   "
sql3=sql3& " '; '   +   C.text2   Like   '% '   +   ' "&   searchdatatmp(i)   & " '   +   '% '   "
else  
for   i=0   to   max  
if   i=0   then  
sql1=sql1& "   (B.name   like   '% "   &   searchdatatmp(i)   &   "% '   and   "
sql2=sql2& "   ( '; '   +   C.text1   Like   '% '   +   ' "&   searchdatatmp(i)   & " '   +   '% '     and   "
sql3=sql3& "   ( '; '   +   C.text2   Like   '% '   +   ' "&   searchdatatmp(i)   & " '   +   '% '     and   "
else
if   i=max   then  
sql1=sql1& "   B.name   like   '% "   &   searchdata