下沙论坛

 找回密码
 注册论坛(EC通行证)

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 3190|回复: 1
打印 上一主题 下一主题

一个用于搜索的函数

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-4-14 10:40:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
'====================================================================
/ b4 J2 E! x- z) z'= Copyright (c) 2005 Eason Chan All Rights Reserved.7 U- |  \1 V# S
'=-------------------------------------------------------------------
7 g& [8 m. T: w( t  o'= 摘    要:格式化搜索字符函数
% Z8 X# `. G3 Q9 ~! l+ }'=-------------------------------------------------------------------
; I* u! w0 P( s) Z$ i'= 最后更新:eason0076 ]4 x% ?. C. D2 m
'= 最后日期:2005-01-219 `& G+ b3 i3 y! t& i7 n5 [* F
'====================================================================4 W5 D/ }3 K3 H2 D8 v- K
Function MakeSQLQuery(QueryField,QueryStr)+ l3 A+ i# x7 b1 G$ z
     Dim TagStart,TagEnd# L: S  M! o8 z; ?+ c/ Z7 j
     Dim TempStr,TempArray) v7 [8 t$ [: R0 c( i7 l) I
     Dim FullQueryStr
3 p/ m! H/ L# X. P  s, \     Dim i,Way% X. `. d# _5 F9 c" p$ |1 t
     
: p: H  k# }( P     '先找引号定界符
. t  f, a) a' j, V, C     Do8 ?0 W1 s5 t" ^8 h, ]! R
           TagStart=InStr(QueryStr,"\"), \% C% n* R* P# g  N" v' }2 l, i9 |
           If TagStart>0 Then
$ p' ~# t4 T8 m                 TagEnd=InStr(TagStart+1,QueryStr,"\")  m' X; x& p) M: N7 u" {3 x' b
                 
  t1 L8 c1 g' T- a. q0 i                 TempStr=Mid(QueryStr,TagStart+1,TagEnd-TagStart-1)
8 j: O  @/ ~# e4 Y                 TempStr=Replace(TempStr," ","#"); ^% B$ l& O* l
                 
% `$ M8 @( I, u; t" W: t                 QueryStr=Left(QueryStr,TagStart-1)&TempStr&Right(QueryStr,Len(QueryStr)-TagEnd)( {- ]- u: h& B: f2 S; G
           End If
+ z; z$ y( {  q6 F( ~8 q$ |     Loop While TagStart>0
: ~2 d( }4 p8 h1 j5 M     
4 B2 r' Y# e4 |     '处理or定界符
, u4 O! W, J: [8 N2 E7 k     QueryStr=Replace(QueryStr,"|"," @")  n& Y! P1 r, h
     '分隔关键字+ Y- q" E$ Y- U! `
     TempArray=Split(QueryStr," ")% U$ G) x! O4 f0 X; w
     ( S8 }! z! j' [( w
     For i=0 To UBound(TempArray)
$ |* x! R3 m+ i" X! x           If Left(TempArray(i),1)="@" Then* E$ C( _& X4 s- ^3 {* f
                 FullQueryStr=FullQueryStr&" Or "&QueryField
) r; Q& n7 o' ?: w; q6 G                 TempArray(i)=Right(TempArray(i),Len(TempArray(i))-1)" T$ p3 V# C% V; \  P8 V
           Else
2 e) U* S- |* ]* l2 g. ~. d                 FullQueryStr=FullQueryStr&" And "&QueryField9 R5 \+ m9 T: H* x4 X" b
           End If
; @( L! x, \* K6 [9 R/ d! x           
: N1 i' }* x9 D2 W           If Left(TempArray(i),1)="-" Then / B# {! E0 J. ]4 j$ i( U$ W7 M; Y
                 FullQueryStr=FullQueryStr&" Not "
; {& s0 [; R4 j3 H                 TempArray(i)=Right(TempArray(i),Len(TempArray(i))-1)1 u3 L5 h8 E3 [' j7 c: I
           End If1 h" [; Q. M, S
           
" ~0 `. R: S& Q% t$ H           FullQueryStr=FullQueryStr&" Like '%"&TempArray(i)&"%'"
/ H0 c$ K5 H% f: O& R           ; ]) W* ]$ q0 [  J2 a* p8 T) p
           FullQueryStr=Replace(FullQueryStr,"%$","")
$ G- o9 x  W$ F2 R: Y5 d1 I           FullQueryStr=Replace(FullQueryStr,"$%","")
8 Z# N$ Y6 A1 V% U6 {3 m) V$ f           FullQueryStr=Replace(FullQueryStr,"#"," ")
4 q% b8 Y( O0 y, s1 v. N) X     Next9 y# {; l# N0 x" X3 \: [" r
     
% B- E, N% R& k4 r     MakeSQLQuery=FullQueryStr7 H7 W- K, ]+ x# f3 {3 b
End Function
" h1 @2 v) x* U- b" j8 w$ q6 v$ r$ k
6 V$ k0 B% ~. i! N0 M  H
说明:
6 O$ P- w# P. O( n( V* b用于搜索时,用户可进行复杂的查找,当前1。0版本只支持单字段的搜索,有心人士可自行修改为支持多字段,但请保留我的版权信息。1 X8 p# S2 x& d
如有疏忽之处,还请原谅!
0 ?/ J# x; m" O; p! ~+ `7 S, r/ A3 I/ @1 w! i, ]! ^/ `
示例:4 F4 q9 D; y6 b' ~
1、 空格连接=and,如 你好 我要=%你好% and %我要%
' P+ R5 Z2 b8 Z" x6 {; {, D/ C) v2、 避免内容包含字符=-,如 你好 -我要=%你好% and not like %我要%
% `( e1 i6 Q* H& e3、 |=or,如 你好|我要=%你好% or %我要%
8 j# \* `% b3 l  N2 [3 M4、 词组搜索用双引号包含,如 \i love this game\=%i love this game%,而非=i and love and this and game # C: M- Q4 i7 E
5、 $为定界符,如 $你好=以 你好 开头的字符,你好$=以 你好 结尾的字符 2 y- P* |6 j6 v9 M& T& j

3 f" J. J& O: k  E组合查询
6 w% {. Z3 _' `4 h' w0 ^/ l如 \i love this game\|-你好=%i love this game% and not like %你好% # }7 k6 p* p$ q
如 我要$|-$你好=%我要 or not like 你好% . v3 C7 o2 ]+ M9 n5 s
如 $\i love this game\ $你好$=i love this game% and like 你好
1 ]8 T0 {- T* z; Q" W5 c
. X! o/ n( c1 ^$ N/ I调用:
+ C  N! t' }: I4 T. n7 x* @# o" x9 p# ]/ m
Dim SQL,WSQL# T+ T5 ]* N8 W, p! Q
Dim Keyword,Field
4 f/ ?: D$ ]8 F. ]: ^" r# V/ x- A8 r* X! c  l
'get keyword# f3 Q  l; u- L$ r3 }% o
Keyword=Request("keyword")
* @' O% n1 G+ p$ n6 d" ^- yField=Request("field")
  X: o0 V) `9 O" R* K  }" y) p
$ ~5 c" F6 w7 c2 `- G9 m2 G1 XWSQL=MakeSQLQuery(Field,Keyword)
! O2 @  B0 _' }* v. e+ _% X- W5 c# d! j1 h
SQL="SELECT * FROM table1 WHERE 1=1 "&WSQL
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩

该用户从未签到

2
发表于 2005-4-15 12:58:00 | 只看该作者

哦,

本版积分规则

关闭

下沙大学生网推荐上一条 /1 下一条

快速回复 返回顶部 返回列表