教您用SQL语句进行模糊查询

数据库 SQL Server
如果需要在数据库中进行模糊查询,用SQL语句能否实现呢?答案是肯定的。下面就将为您介绍用SQL语句进行模糊查询的方法,供您参考。

下面将为您介绍用SQL语句进行模糊查询的方法,供您参考,如果您在模糊查询方面遇到了问题,不妨一看,相信对您灵活使用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")&"%’
的方式构造更多的条件。这样我们就实现了多条件的模糊查询,实际试一试,问题出来了!!!如果数据库的查询字段都有值的化没问题,但如果是下边这样:

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

 

【编辑推荐】

SQL中数据类型转换函数的使用

SQL中随机数函数rand()简介

为您讲解SQL动态语句的语法

Sql Server中表复制的语句

SQL Server如何查看SQL语句的执行时间

责任编辑:段燃 来源: 博客园
相关推荐

2010-11-18 16:27:37

2010-09-28 11:28:40

SQL字段属性

2010-09-25 11:02:33

SQL主键

2010-09-07 10:42:12

SQL语句

2010-09-26 13:56:43

SQL远程查询

2010-10-27 17:04:41

Oracle动态查询

2010-09-24 18:47:23

SQL数据分页

2010-09-17 13:35:30

SQL跨表更新

2010-11-24 10:35:34

MySQL单表多字段

2010-09-28 14:52:37

SQL表结构

2010-11-25 13:45:07

MySQL查询语句

2010-09-28 11:07:37

SQL索引

2010-09-03 14:14:16

SQL删除

2010-09-24 15:58:24

SQL语句逐条更新

2010-09-26 13:51:48

SQL游标

2010-09-14 16:36:34

SQL SERVER查

2010-09-07 15:31:20

SQL语句事务

2010-09-07 15:54:47

SQL语句LIKE

2010-10-21 11:44:55

SQL Server分

2010-09-17 10:08:18

SQL中case wh
点赞
收藏

51CTO技术栈公众号