下沙论坛

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

QQ登录

QQ登录

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

一个用于搜索的函数

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-4-14 10:40:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
'====================================================================& F" z$ ^& Y, ?" g
'= Copyright (c) 2005 Eason Chan All Rights Reserved.8 N- u! k: T9 Z0 x# F; u9 s, H
'=-------------------------------------------------------------------
! y1 v/ w2 {4 j  O2 D. ^# S'= 摘    要:格式化搜索字符函数
4 G; L6 v7 L9 T'=-------------------------------------------------------------------
, Z8 y1 G/ G) T: S5 B'= 最后更新:eason0076 t/ ~6 f' `& i: f
'= 最后日期:2005-01-21+ b+ h% o; k! d9 ]$ @0 l
'====================================================================6 a5 F1 Y: J3 Z( y- n
Function MakeSQLQuery(QueryField,QueryStr)  B3 c1 c" X6 U7 _5 o; O/ ^/ p
     Dim TagStart,TagEnd
7 D0 B9 I* J! v+ |% Y2 q     Dim TempStr,TempArray
* j, \/ Z1 S5 J1 n     Dim FullQueryStr
! L; s' V: L+ w  g) b     Dim i,Way
. }; U9 U- }& Q4 F. U     ' }, r" j* N/ Q2 P
     '先找引号定界符
1 F" R% m- V& K1 ?     Do
, n" d$ T! L; s' p6 o. _           TagStart=InStr(QueryStr,"\")7 N: i. ], V2 y. {
           If TagStart>0 Then
8 o8 v" d+ w2 u7 a+ n! p                 TagEnd=InStr(TagStart+1,QueryStr,"\")
' T' M+ ^7 w1 o, P3 Y                 
( C7 [1 _* E; l" T                 TempStr=Mid(QueryStr,TagStart+1,TagEnd-TagStart-1)
2 M, N" j) z9 R( p# _( F                 TempStr=Replace(TempStr," ","#")
6 L7 F% R4 n. ?6 H! J                 7 I9 u! `+ {& M' x4 k9 H
                 QueryStr=Left(QueryStr,TagStart-1)&TempStr&Right(QueryStr,Len(QueryStr)-TagEnd)
; |; D) r2 e6 Y/ f" j& J! M           End If
7 n8 X. u2 f% j  i5 \0 m8 G     Loop While TagStart>0, X/ V: C  |% b4 j7 W4 U
     
1 V4 n) p3 ~0 W     '处理or定界符
. h  ~1 v: Z% m0 o     QueryStr=Replace(QueryStr,"|"," @")0 V) C1 p6 p' L+ p# z7 W9 _
     '分隔关键字
; ]( _: r% P! ^& G8 o, Z2 k     TempArray=Split(QueryStr," "); j+ L7 p' k- `% F
     + x0 x7 F4 ^1 y% l6 F) {* h
     For i=0 To UBound(TempArray)& a  ^5 N, q. X6 e2 s1 M3 A7 T
           If Left(TempArray(i),1)="@" Then
- i+ T9 X# y" d, ]" u# M) c                 FullQueryStr=FullQueryStr&" Or "&QueryField
$ ?9 O* t2 P2 \                 TempArray(i)=Right(TempArray(i),Len(TempArray(i))-1)
7 n$ ?3 s: W3 X1 _           Else( R7 \5 z& d! m) Y/ c( M
                 FullQueryStr=FullQueryStr&" And "&QueryField
( ?4 d* h) G: _           End If
( U  U; F+ T6 h( Z3 P$ e           
& ~% _% k: ^+ _% [( k1 P           If Left(TempArray(i),1)="-" Then ) k3 H, D' r5 {# u
                 FullQueryStr=FullQueryStr&" Not "
# |- J$ T0 _8 U& M                 TempArray(i)=Right(TempArray(i),Len(TempArray(i))-1)
  A& v" b" Q4 Z9 }* h           End If
! j; z$ D2 x$ N1 v$ Y7 @- j5 {           # {/ v0 x3 |4 _3 I* e/ a, ^' H. [
           FullQueryStr=FullQueryStr&" Like '%"&TempArray(i)&"%'"
0 u$ [+ `+ N: T- e+ w           
/ U5 i9 y) V8 ~0 x& @/ L           FullQueryStr=Replace(FullQueryStr,"%$","")
6 Q" Y9 @! V$ U6 y+ V7 k" R* M           FullQueryStr=Replace(FullQueryStr,"$%","")3 R2 h3 Z$ Q' I7 L* R2 {. x
           FullQueryStr=Replace(FullQueryStr,"#"," ")$ Z; t5 p; M$ T1 W( P/ f6 k
     Next1 ?' x( w6 E# d) r3 k! e+ i
     
" X4 `% ~6 h) f4 g3 f9 F     MakeSQLQuery=FullQueryStr
" z2 F  n9 _0 ?End Function
& [& t7 m- m: Z, |
1 }) d) V9 A4 j% V/ a' j2 V  ~) _7 b5 A( ?
说明:, M! w' T1 G8 ^/ T
用于搜索时,用户可进行复杂的查找,当前1。0版本只支持单字段的搜索,有心人士可自行修改为支持多字段,但请保留我的版权信息。
7 `' ?- Y. @! C: P如有疏忽之处,还请原谅!8 n' Y, y, J& S( X# t* j$ T
% ~' w8 x- m8 d; N1 P9 k3 e- |
示例:
6 D2 Y, Q: p% }; f1 u- B) |6 P1、 空格连接=and,如 你好 我要=%你好% and %我要% 2 `7 }/ N5 Q; U" z5 y9 ~
2、 避免内容包含字符=-,如 你好 -我要=%你好% and not like %我要%
/ y7 Y  q* C0 h& L7 N3、 |=or,如 你好|我要=%你好% or %我要%
/ x8 t: W! g* }. T. ~' b9 n( b4、 词组搜索用双引号包含,如 \i love this game\=%i love this game%,而非=i and love and this and game
/ y/ i% B* l9 `  {5、 $为定界符,如 $你好=以 你好 开头的字符,你好$=以 你好 结尾的字符
/ h7 [: l6 Y* H* N0 A' c8 n. Y! r, `  D1 @. F! ?. f$ y3 c0 N. l4 _
组合查询 ( ]( A2 @* m4 j7 r) z; \' \
如 \i love this game\|-你好=%i love this game% and not like %你好%
; o5 A: ?5 V+ s( M& X- m' C如 我要$|-$你好=%我要 or not like 你好% # Q) h6 i# B7 Q, F# ?2 E, G( g( l
如 $\i love this game\ $你好$=i love this game% and like 你好 ; v: j* P9 V( v6 q4 N: R6 v: D$ A

6 r) r! J' |, N! P调用:4 K! q; Z7 t! d, R6 e6 P

2 n7 e9 |, {+ P3 ]Dim SQL,WSQL! t$ M7 e' T: H+ r7 m: b; w
Dim Keyword,Field
3 T1 f2 h6 ~4 H" q$ M3 L' w/ Z" ~; Y; G
'get keyword- g% }5 k! |" n0 B1 E
Keyword=Request("keyword")5 D- P* g9 H# s/ T
Field=Request("field")
  e: i. O3 O" ?5 }- G+ a7 |* q; a: v
WSQL=MakeSQLQuery(Field,Keyword). d# T/ A) [: c( y

8 E9 U4 V+ F! y3 O2 |2 bSQL="SELECT * FROM table1 WHERE 1=1 "&WSQL
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩

该用户从未签到

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

哦,

本版积分规则

关闭

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

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