asp中php字符串模糊匹配配

页面导航:
→ 正文内容 模糊查询
asp.net 多字段模糊查询代码
经常用到多字段的模糊查询,上面的函数可以实现,例如strKeyWords值为“脚本之家”时
string&strField&=&"id|className|classAdd"; string&strKeyWords&=&this.tbxKeyWords.Text.Trim(); string&strSql&=&dbexe.searchText("select&*&from&class",&strField,&strKeyWords); 经常用到多字段的模糊查询,上面的函数可以实现,例如strKeyWords值为“脚本之家”时,可以输出: select&*&from&class&where&id&like&'%脚本之家%'&or&className&like&'%脚本之家%'&or&classAdd&like&'%脚本之家%'& 函数: ///&&summary& ///&根据关键字实现多字段模糊查询 ///&&/summary& ///&&param&name="sqlStr"&select&*&from&talbe&sql语句&/param& ///&&param&name="sqlText"&判断语句条件,是一个用|隔开的字符串&/param& ///&&param&name="keywords"&关键字&/param& public&static&string&searchText(string&strSql,&string&strField,&string&keywords) { &&&&StringBuilder&sb&=&new&StringBuilder(strSql); &&&&if&(strField&!=&string.Empty) &&&&{ &&&&&&&&sb.Append("&where&"); &&&&&&&&string[]&arrKey&=&strField.Split('|'); &&&&&&&&for&(int&i&=&0;&i&&&arrKey.L&i++) &&&&&&&&{ &&&&&&&&&&&&sb.Append(arrKey[i]&+&"&like&'%"&+&keywords&+&"%'&or&"); &&&&&&&&}& &&&&&&&&string&str&=&sb.ToString(); &&&&&&&&//去除最后一个"or" &&&&&&&&if&(str.IndexOf("or")&&=&0) &&&&&&&&{ &&&&&&&&&&&&return&str.Remove(str.LastIndexOf("or")); &&&&&&&&} &&&&&&&&return& &&&&} &&&&return&strS }
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910asp.net如何实现多条件选择模糊查询?
asp.net如何实现多条件选择模糊查询?
08-10-25 & 发布
通常写一个简单的模糊查询的SQL语句格式可以如下例: 说明:1、WHERE 关键词的后面跟着用来过滤数据的条件,百分号%是通配符,可以代表多个任何字符,若是下划线_就代表一个任意字符。 实例如下: sql=&select * from 表名 where 姓名 like ’%&&request.form(&name&)&&%’ and 性别 like ’%&&request.form(&sex&)&&%’ and 电话 like ’%&&request.form(&call&)&&%’ & 上面这条SQL语句使用了三个模糊查询条件:姓名、性别、电话,当然我们还可以用类似 的方式构造更多的条件。这样我们就实现了多条件的模糊查询,实际试一试,问题出来了!!!如果数据库的查询字段都有值的化没问题,但如果是下边这样: 姓名 性别 电话
当你模糊查询:&电话:5432&时将无法输出该记录,这是因为&性别&无值所以经两个and运算后结果为false/0,没有输出。 显然数据库中这三个字段的必须含有字段值,否则会漏掉正确的输出结果, 数据库中正确的输入应是这样的: 姓名 性别 电话
&null&值的逻辑值为1,所以经两次and运算后结果为true/1,可以输出上述记录。 那么在实际中如何来实现这样的多条件模糊查询呢?我是这样来实现的: name=Request.QueryString(&name&) ’姓名 sex=Request.QueryString(&sex&) ’性别 call=Request.QueryString(&call&) ’电话 Sql= &Select * from 表名 where 1=1& ’1=1 避免所有查询字段为空时出错 if name &&&& then Sql= Sql & &and 姓名 like ’%&& name &&%’& end if if sex &&&& then Sql= Sql & &and 性别 = ’&& sex &&’& ’这个不是模糊查询了 end if if call &&&& then Sql= Sql & &and 电话 like ’%&& call &&%’& end if ...... 在此,你要注意到姓名、性别、电话这三个字段在数据库中的类型应为“文本”类型,否则查询时会出现“数据类型不匹配”错误。 如果三个条件均无输入,点击“查询”时将显示数据库中的所有记录,可能这是你不希望的,可以应该加入一个判断:当三个条件均无输入时,显示“请输入查询条件”,并中断输出到客户浏览器(response.end)例句如下: if request.form(&name&)=&& and request.form(&sex&)=&& and request.form(&call&)=&& then response.write(&请输入查询条件(可模糊查询)&) response.end end if 切记:sql=&select * from 表名 where 姓名 ... 电话 like ... & 必须在一行内输入完,而不能用回车符分段,因为vbs多行被认为是多个语句,这是许多初写者常犯的错误。如果你想分多段写,可以用上面的方法在现有变量基础上逐步增加查询语句的各个组成部分并把它存在同一变量内实现。在封闭引号之前或者在打开引号之后你需要增加空格,这样才能保证字符串连接起来的时候你没有把几个词凑到了一块。
请登录后再发表评论!
只是多条件模糊查询,写SQL语句的时候做成动态的即可
需要什么条件就拼什么条件~~
请登录后再发表评论!汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1015)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_084068',
blogTitle:'asp精确查找和模糊查找的代码',
blogAbstract:'精确查找: sql=\"select * from main where tp=\'\"&id&\"\' order by id desc\"\r\n模糊查找:&& sql=\"select * from main where tp like \'%\"&keyword&\"%\' or tp1 like \'%\"&keyword&\"%\' order by id desc\"(or为或,and为且)',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'-1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}大家都知道SQL语句是酱紫的:
正常:&&&& select * from [User] where userName like '%admin%'&& 参数化:& select * from [User] where userName like @userName
这样就查出了包括admin关键字的记录
就是这个简单的语句,在参数化的时候怎么也查不出来,去拼like后面的字符串拼成酱紫的:&
&&&&&&&&&错误:&&& new SqlParameter("@userName", string.Format("%'{0}'%", userName));&&&&&&&&& 错误:&&& new SqlParameter("@userName", string.Format("'%{0}%'", userName));
&&&&&&&& 正确:&&& new SqlParameter("@userName", string.Format("%{0}%", userName));
注意对比红色字体的部分,就是多了一对单引号,就查不出来了…… 至于为啥?自己慢慢领悟吧,哈哈哈哈
阅读(...) 评论()

我要回帖

更多关于 js字符串模糊匹配 的文章

 

随机推荐