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