返回列表 发帖

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

前段时间做一个在asp中实现多条件模糊查询,这里我整理了一下,假设以姓名、性别、电话号...作为数据库中的字段名。

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

ORACLE 客户服务号,ORACLE CUSTOMER SERVICE.ORACLE CUSTOMER ERP SERVICE ACCOUNT.
oracle metalink帐号oracle erp ebs DB meta link 官方账户一年
oracle metalink 帐号


https://support.oracle.com
http://metalink.oracle.com
可以正常登录,可以提交问题
期限最低保一年(由于我本人是某顾问公司TEK CONSULTANT,
陆续给N家公司上个ORACLE ERP R11I,R12,
每上一套产品 都会在metalink新增一个有效的客户号账户,
由于三年维护期,大部分我都是其oracle 官方账户管理员,需要metalink 账号的朋友可以拍下后联系我,我账户下所属的客户号较多,所以提供给 各位的有效期不一致,显示合同到期时间有远有近,但是一般的公司好不容易花了几千万上了oracle erp 很少用个三两年就不续费的,所以我提供给你们的metalink权限 基本都是可以用N久的。。(真碰到很碎的情况,我免费再给你移动到其他可用的客户号下面)。

需要的朋友,拍下后,再联系我
同时 为节省时间 先自行注册一个oracle 账号,
注册登录后,页面会提示你输入 客户服务号的
到时候我直接给你们提供 客户服务号,你提交申请,然后我在这边完成相关签核设置等.
一般一个小时内可搞定。
拍下的朋友,急用?请联系我QQ:93706138 旺旺:ahlqmhj
手机:13817753594马先生
(早上8:00-12:00 下午1:00-5:30上班时间不急最好短信)

另外
具备管理员权限的 metalink账号,价格1W-5W RMB/个。
[企业专用版]oracle metalink帐号PATCH,SR 提交不限量时间,2年5400
http://item.taobao.com/item.htm?id=8349784147
使用期限最低包两年价格为:1200RMB/个/最低2年
http://item.taobao.com/item.htm?id=7665121285
使用期限最低包1年价格为:700RMB/个/最低1年
http://item.taobao.com/item.htm?id=7665383935
使用期限最低包24周价格为:400RMB/个/24周(学习版,简单阅读资料)
http://item.taobao.com/item.htm?id=7665411009
可根据情况自行选购
MetaLink的作用
技术文档的资料库
诊断测试
交互论坛
访问SR
个性化的页面设置
程序补丁更新的等。。。
oracle 真正的收费服务
相关的主题文章:

  
   文章读取错误

TOP

返回列表

最新关注 关闭


关于论坛注册,最新修改,请网友们注意

由于最近大量垃圾信息出现在我们的论坛,为了营造一个良好的氛围,目前论坛只开发邀请注册,你可以点击以下链接自动邀请注册(如果有人使用了点击下一个试一试) ...


查看
珩源工控论坛热诚欢迎您联系我们进行合作!

Powered by Discuz! 7.2© 2001-2009 Comsenz Inc.

珩源工控论坛 ( 桂ICP备19004328号) |论坛统计|WAP| 客服中心-www.hymcu.com
  

GMT+8, 2024-4-20 21:34, Processed in 1.069640 second(s), 6 queries, Gzip enabled.