mysql模糊查询%参数%;当输入%时就奖全部记录都查出来,我想输入%时查询像%aa这样的记录,改怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql模糊查询%参数%;当输入%时就奖全部记录都查出来,我想输入%时查询像%aa这样的记录,改怎么办?相关的知识,希望对你有一定的参考价值。
%a%,%ss%都可以,但是%%%就查出全部而不是像%aa这样的记录。怎么办,求大侠!
那你查询前把你要查询的特殊符号替换下 % 替换为 \% 这样mysql 就不会把你输入的 % 当成特殊字符了 参考技术A mysql 中 %%% 是查询所有记录的, 你说你想像%aa这样子查,应该是不可能的,因为, 比如我在文本框内输入了个 % , 你那aa的值是从哪里来的呢? 我根本没输过aa喔~追问
我的意思是数据库里面有条%aa这样的记录,然后我想通过模糊查询输入%查到%aa这条记录。
追答如果是这样,那加上\就可以了,如: %\%aa%
来自:求助得到的回答 参考技术A 判断参数,如果等于就当作没有参数,要么反馈回去没查到;要么当作一个不可查询的条件如1=2就回返0行。 参考技术B mssql中 模糊查询%参数% 该为 %[特殊参数]% ,比如你的示例 %[%]%,追问输入正常参数也可以%[a]%?貌似不行吧?
追答是的[]的作用是把[]中的字符当做字符串来处理,不是特殊符号,你如果有查询包含%aa这样符号的字段 可以这样 like '%[%]aa%'
asp模糊查询的一些问题,高手进
我在asp模糊搜索时碰到一些问题,代码可以使用但我仔细研究了一下运行结果,发现存在大量的问题。我不知道是不是我的代码问题还是asp本身问题所以请教一下高手。出现的问题有几个方面
一、当搜索结果只有1条时确显示三条数据
二、当搜索结果只有1条时似乎mid函数没有发挥作用。我截取的是200个字符,却显示的是全部内容。
三、有大部分数据条件匹配却搜索不到
为方便各位高手阅读我精简了一下代码
<%
Dim word’word函数是关键字
If request.querystring("word")="" then
word=trim(request.Form("keyword"))
else
word=trim(request.QueryString("word"))
End if
Word=Replace(Word,","," ")
Word=Replace(Word,","," ")
Wordlist=split(trim(word)," ")
%>
<%
Dim i,searchurl
If word<>"" then
For i=0 to ubound(Wordlist)
SearchSql=SearchSql & "title like '%"&Wordlist(i)&"%' or "
SearchSql=SearchSql & "content like '%"&Wordlist(i)&"%' or "
Next
SearchSql=left(SearchSql,(len(SearchSql)-3))
Set rs=server.CreateOBject("ADODB.ReCordSet")
Sql="select id,title,date,content,class from LM_article where "&SearchSql
rs.open sql,conn,1,1
If not(rs.eof and rs.bof) Then
rs.PageSize=5
if page=0 then page=1
pages=rs.pagecount
if page > pages then page=pages
rs.AbsolutePage=page
If pages="" then
pageinfo="抱歉,没有找到关于"&word&"的文章"
else
pageinfo="www.key28.cn上共有"&pages&"条包含"&word&"的查询结果"&sql&""
end if
%>
<div class="search1"><%=pageinfo%></div>
<%
For j=1 to rs.PageSize
searchurl="Article/"&rs("date")&"/"&rs("id")&".html"
contentRs=rs("content")
contentRs=RemoveHTMLTag(contentRs)
For a=0 to ubound(Wordlist) '转换内容为关键字打头
contentNum=instr(contentrs,Wordlist(a))
if contentNum<>0 then
contentrs=server.htmlencode(mid(contentrs,contentnum,200))
exit for
end if
Next
For s=0 to ubound(Wordlist)
contentrs=replace(contentrs,wordlist(s),"<font color=#0000FF>"&wordlist(s)&"</font>")
Next
%>
<div class="search2"><a href=<%=searchurl%>><%=rs("title")%></a><br /><%=contentrs%><br /><font color="#008000"><%=searchurl%></font></div>
<div class="search3"></div>
<%
rs.movenext
if rs.eof then exit for
next
rs.close
set rs=nothing
End if
End if
%>
朋友们,在For i=0 to ubound(Wordlist) 里大家有没有注意一下有这个SearchSql=left(SearchSql,(len(SearchSql)-3))
所以查询的sql完整的语句将是Sql="select id,title,date,content,class from LM_article where content like '%"&Wordlist(i)&"%' or title like '%"&Wordlist(i)&"%' " 希望大家能帮忙,程序演示在http://www.key28.cn/ss.asp
改为while not rs.eof... wend试一试 看看能不能解决你的第一个问题
contentNum=instr(contentrs,Wordlist(a))
contentNum有多个值,取的是最后一个存在关键字的位置
如果用的是access可能会遇到匹配不到的情况,但sql server好像没有这个问题 参考技术A For i=0 to ubound(Wordlist)
SearchSql=SearchSql & "title like '%"&Wordlist(i)&"%' or "
SearchSql=SearchSql & "content like '%"&Wordlist(i)&"%' or " '这里当循环结束时会多产生一个or
Next
以上是关于mysql模糊查询%参数%;当输入%时就奖全部记录都查出来,我想输入%时查询像%aa这样的记录,改怎么办?的主要内容,如果未能解决你的问题,请参考以下文章