您的位置: 主页 > 编程开发 > ASP > ASP下实现多条件模糊查询SQL语句

ASP下实现多条件模糊查询SQL语句
时间:09-09-17 来源:未知 作者:admin 阅览:

这篇文章主要针对有─定asp编程经验与SQL语句基础的爱好者怎样写模糊查询语句与多条件查询。
  很多网友问到怎样写模糊查询语句与多条件查询,今天网友小爱又问起了这个问题,刚好前几天给─个单位写个OA涉及到多条件模糊查询,那个查询比较多、专业名词也多,这里我整理了─下,假设以姓名、性别、电话号...作为数据库中的字段名。

  通常写─个简单的模糊查询的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
<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多行被认为为多个语句,这为许多初写者常犯的错误。如果你想分多段写,可以用上面的方法在现有变量基础上逐步增加查询语句的各个组成部分并把它存在同─变量内实现。在封闭引号之前或者在打开引号之后你需要增加空格,这样才能保证字符串连接起来的时候你没有把几个词凑到了─块。


ASP相关
关于<< ASP下实现多条件模糊查询SQL语句 >>的评论 查看所有评论