实现多条件模糊查询SQL语句

很多网友问到如何写模糊查询语句和多条件查询,这里我整理了一下,假设以姓名、性别、电话号...作为数据库中的字段名。 

通常写一个简单的模糊查询的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")&"%’  的方式构造更多的条件。这样我们就实现了多条件的模糊查询,实际试一试,问题出来了!!!如果数据库的查询字段都有值的化没问题,但如果是下边这样: 
         姓名                                   性别           电话  
                             87654321 
        当你模糊查询:"电话:5432"时将无法输出该记录,这是因为"性别"无值所以经两个and运算后结果为false/0,没有输出。 显然数据库中这三个字段的必须含有字段值,否则会漏掉正确的输出结果, 
        数据库中正确的输入应是这样的: 
         姓名                                    性别            电话  
                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多行被认为是多个语句,这是许多初写者常犯的错误。如果你想分多段写,可以用上面的方法在现有变量基础上逐步增加查询语句的各个组成部分并把它存在同一变量内实现。在封闭引号之前或者在打开引号之后你需要增加空格,这样才能保证字符串连接起来的时候你没有把几个词凑到了一块。 

猜你喜欢

实现多条件模糊查询SQL语句

2020-12-22

很多网友问到如何写模糊查询语句和多条件查询,这里我整理了一下,假设以姓名、性别、电话号...作为数据库中的字段名。通常写一个简单的模糊查询的SQL语句格式可以如下例:sql="select * from 表名 where

怎样从一个电子表格文档中显示出记录

2020-12-21

你好!这是我的部落格里面的第一篇博客,希望能帮到你。我发现软件开发人员经常需要用ASP从电子表格中显示记录。当从一个电子表格文档中检索数据的时候我们需要使用SQL命令,我们知道怎样和SQL联系上。这是SQL的连接

fso读取和生成txt 编码UTF-8

2020-12-12

利用fso.OpenTextFil读取UTF-8文件或者用FSO.save生成UTF-8文件时乱码解决办法生成静态页使用的方法是读取asp页面的html代码,保存为html文件,这种方法。由于动态页是utf8格式的编码,我得到它的html代码后,使用fs

用ASP生成Sitemap

2020-09-26

网站地图是网站的重要因素,你可以说它是访问用户网站的页面列表。它在组织分层方式。基本上可以帮助游客和主要的搜索引擎查找您网站的特殊的页面。它提高网站的搜索引擎优化,它的工作原理就像动态访问网站一样。基

IE8积极修复缓存机制

2020-09-10

显然,Internet Explorer 8是我见过的有比任何其他浏览器都更积极的缓存机制。为了解决这个问题我已经把几乎每一个动态页面添加了以下代码到我的服务器上。%//防止缓存(ASP javascript) Response . CacheControl="

Lodop打印插件的说明

2020-08-09

Lodop(6.111及之后版本)按域名的高级注册号和使用方式(域名为:36.110.131.136,localhost):在页面装载之后,调用Lodop普通函数之前执行一次如下语句:LODOP.SET_LICENSES("","AB07D267B8C8A7EC25207C47DC2D3D1C","C94

X
返回
顶部