一个用于搜索的函数
'===================================================================='= Copyright (c) 2005 Eason Chan All Rights Reserved.
'=-------------------------------------------------------------------
'= 摘 要:格式化搜索字符函数
'=-------------------------------------------------------------------
'= 最后更新:eason007
'= 最后日期:2005-01-21
'====================================================================
Function MakeSQLQuery(QueryField,QueryStr)
Dim TagStart,TagEnd
Dim TempStr,TempArray
Dim FullQueryStr
Dim i,Way
'先找引号定界符
Do
TagStart=InStr(QueryStr,"\")
If TagStart>0 Then
TagEnd=InStr(TagStart+1,QueryStr,"\")
TempStr=Mid(QueryStr,TagStart+1,TagEnd-TagStart-1)
TempStr=Replace(TempStr," ","#")
QueryStr=Left(QueryStr,TagStart-1)&TempStr&Right(QueryStr,Len(QueryStr)-TagEnd)
End If
Loop While TagStart>0
'处理or定界符
QueryStr=Replace(QueryStr,"|"," @")
'分隔关键字
TempArray=Split(QueryStr," ")
For i=0 To UBound(TempArray)
If Left(TempArray(i),1)="@" Then
FullQueryStr=FullQueryStr&" Or "&QueryField
TempArray(i)=Right(TempArray(i),Len(TempArray(i))-1)
Else
FullQueryStr=FullQueryStr&" And "&QueryField
End If
If Left(TempArray(i),1)="-" Then
FullQueryStr=FullQueryStr&" Not "
TempArray(i)=Right(TempArray(i),Len(TempArray(i))-1)
End If
FullQueryStr=FullQueryStr&" Like '%"&TempArray(i)&"%'"
FullQueryStr=Replace(FullQueryStr,"%$","")
FullQueryStr=Replace(FullQueryStr,"$%","")
FullQueryStr=Replace(FullQueryStr,"#"," ")
Next
MakeSQLQuery=FullQueryStr
End Function
说明:
用于搜索时,用户可进行复杂的查找,当前1。0版本只支持单字段的搜索,有心人士可自行修改为支持多字段,但请保留我的版权信息。
如有疏忽之处,还请原谅!
示例:
1、 空格连接=and,如 你好 我要=%你好% and %我要%
2、 避免内容包含字符=-,如 你好 -我要=%你好% and not like %我要%
3、 |=or,如 你好|我要=%你好% or %我要%
4、 词组搜索用双引号包含,如 \i love this game\=%i love this game%,而非=i and love and this and game
5、 $为定界符,如 $你好=以 你好 开头的字符,你好$=以 你好 结尾的字符
组合查询
如 \i love this game\|-你好=%i love this game% and not like %你好%
如 我要$|-$你好=%我要 or not like 你好%
如 $\i love this game\ $你好$=i love this game% and like 你好
调用:
Dim SQL,WSQL
Dim Keyword,Field
'get keyword
Keyword=Request("keyword")
Field=Request("field")
WSQL=MakeSQLQuery(Field,Keyword)
SQL="SELECT * FROM table1 WHERE 1=1 "&WSQL <P>哦,</P>
页:
[1]