asp 模糊查询

<%ifrequest.Form("mingcheng")<>""orRequest.Form("mingcheng")<>""thenifRequest.Form("m... <%
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
%>
想要这样实现,如果模糊查询里面没有对应的数据,返回,无对应的资料,请重新输入关键字查询。请问怎么实现代码,请大神指教。
展开
 我来答
binbin2017
2018-03-30 · TA获得超过3992个赞
知道小有建树答主
回答量:1160
采纳率:0%
帮助的人:898万
展开全部
通常写一个简单的模糊查询的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多行被认为是多个语句,这是许多初写者常犯的错误。如果你想分多段写,可以用上面的方法在现有变量基础上逐步增加查询语句的各个组成部分并把它存在同一变量内实现。在封闭引号之前或者在打开引号之后你需要增加空格,这样才能保证字符串连接起来的时候你没有把几个词凑到了一块。
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
百度网友3cb80af
2018-03-29 · TA获得超过9535个赞
知道大有可为答主
回答量:1.2万
采纳率:83%
帮助的人:3954万
展开全部
<%
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
%>
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式