关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>网络编程>>ASP>>正文|ASP下实现多条件模糊查询SQL语句

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

[ 来路:21kn.com    时间:2007-7-8 0:46:08    点击: ]

 

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

::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:错误 8002801d 库没有注册  下一篇:ASP网站漏洞及入侵防范方法

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

ASP教程:详细学习ASP的内置对象

::图像设计::

 

动态图片搜索家——GIF RUNN
软件搜索利器——FileFerret
实例说明构图要讲规律
Character Builder让你尽展靓
全景图速成者Cool360
三维模型速成工具——Canoma
剪贴专家SmartBoard 32
新世纪的图像处理利器——Ph
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号