asp 模糊查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp 模糊查询相关的知识,希望对你有一定的参考价值。

<%
if request.Form("mingcheng") <> "" or Request.Form("mingcheng")<>"" then
if Request.Form("mingcheng")="" then
response.write"<script>alert('您输入资料是空的!');history.go(-1)</script>"
response.end
else
if request.Form("Submit") <> "" or Request.Form("mingcheng") <> "" then
sql="select 电话,单位名称 from reg where 单位名称 like '%"&Request.Form("mingcheng")&"%' "
call q(sql)
end if
end if
end if
%>
想要这样实现,如果模糊查询里面没有对应的数据,返回,无对应的资料,请重新输入关键字查询。请问怎么实现代码,请大神指教。

通常写一个简单的模糊查询的SQL语句格式可以如下例:

sql="select * from 表名 where 字段名 like ’%" & request.form("请求变量") & "%’ "

说明:1、WHERE 关键词的后面跟着用来过滤数据的条件,百分号%是通配符,可以代表多个任何字符,若是下划线_就代表一个任意字符。
实例如下:
sql="select * from 表名 where 姓名 like ’%"&request.form("name")&"%’ and 性别 like ’%"&request.form("sex")&"%’ and 电话 like
’%"&request.form("call")&"%’ "

上面这条SQL语句使用了三个模糊查询条件:姓名、性别、电话,当然我们还可以用类似
姓名 like ’%"&request.form("name")&"%’
的方式构造更多的条件。这样我们就实现了多条件的模糊查询,实际试一试,问题出来了!!!如果数据库的查询字段都有值的化没问题,但如果是下边这样:
姓名 性别 电话
www.DeepTeach.com 87654321

当你模糊查询:"电话:5432"时将无法输出该记录,这是因为"性别"无值所以经两个and运算后结果为false/0,没有输出。 显然数据库中这三个字段的必须含有字段值,否则会漏掉正确的输出结果,
数据库中正确的输入应是这样的:
姓名 性别 电话
www.DeepTeach.com null 87654321

值的逻辑值为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多行被认为是多个语句,这是许多初写者常犯的错误。如果你想分多段写,可以用上面的方法在现有变量基础上逐步增加查询语句的各个组成部分并把它存在同一变量内实现。在封闭引号之前或者在打开引号之后你需要增加空格,这样才能保证字符串连接起来的时候你没有把几个词凑到了一块。
参考技术A <%
if Request.Form("mingcheng")="" or request.Form("Submit") = "" then
response.write"<script>alert('您输入资料是空的!');history.go(-1)</script>"
response.end
else
sql="select 电话,单位名称 from reg where 单位名称 like  '%"&Request.Form("mingcheng")&"%' "
call q(sql)
'在这里做查询记录判断有没有数据,但是你的查询是写在q函数里,所以没办法给出写法,
'具体要看你的q函数
end if
%>

本回答被提问者和网友采纳

以上是关于asp 模糊查询的主要内容,如果未能解决你的问题,请参考以下文章

asp 模糊查询

ASP模糊查询问题

ASP多值多字段模糊查询分页问题

asp+access like 模糊查询查不到内容

asp模糊查询的一些问题,高手进

求助asp两个字段中模糊查询