asp实现模糊查询
我在asp的模糊查询中遇到这样一个问题,比如我的网站中有手机CECTC1000,(中间显示空格),如果用户搜索CECTC1000(不写当中的空格)就搜索不到,我用的是模糊...
我在asp的模糊查询中遇到这样一个问题,比如我的网站中有手机
CECT C1000,(中间显示空格),如果用户搜索CECTC1000(不写当中的空格)就搜索不到,我用的是模糊查询sql="select * from 表 where 字段名like '%"&search&"%'" 不知道错在哪里,请大家指教,谢谢!
第二个回答者 误解我的意思了,我说的是用户搜索时不输入空格就搜索不到,因为我数据库中的数据包括空格!
呵呵,不好意思,我在试试
提示'replace' 函数未定义,怎么弄啊? “golden” 展开
CECT C1000,(中间显示空格),如果用户搜索CECTC1000(不写当中的空格)就搜索不到,我用的是模糊查询sql="select * from 表 where 字段名like '%"&search&"%'" 不知道错在哪里,请大家指教,谢谢!
第二个回答者 误解我的意思了,我说的是用户搜索时不输入空格就搜索不到,因为我数据库中的数据包括空格!
呵呵,不好意思,我在试试
提示'replace' 函数未定义,怎么弄啊? “golden” 展开
展开全部
通常写一个简单的模糊查询的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
值的逻辑值为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="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
值的逻辑值为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="select * from 表 where replace(字段名,' ','') like '%"&search&"%'"
先把字段名字中的空格去掉
我没误解你的意思.用户不输入空格.只能你的字段把空格去掉才能跟他对比啊..
所以这样做是正确的.你又不能用程序把用户少的空格填上.只能把数据库里的空格去掉后再对比了.
但完整了以后应该把用户的输入的空格也去掉才行.
是你不理解我的意思.不是我误解你的意思
sql="select * from 表 where replace(字段名,' ','') like '%"&search&"%'"
先把字段名字中的空格去掉
我没误解你的意思.用户不输入空格.只能你的字段把空格去掉才能跟他对比啊..
所以这样做是正确的.你又不能用程序把用户少的空格填上.只能把数据库里的空格去掉后再对比了.
但完整了以后应该把用户的输入的空格也去掉才行.
是你不理解我的意思.不是我误解你的意思
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql="select * from 表 where 字段名 like '%"&replace(trim(search)," ","%' and 字段名 like '%")&"%'"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有空到我空间看看 有完整的模糊多条件查询 应该适合你这个
http://hi.baidu.com/bludger/blog
http://hi.baidu.com/bludger/blog
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2022-07-29 · 百度认证:IT168官方账号,优质数码领域创作者
关注
展开全部
对于模糊查询T-SQL有四个通配符
%:包含0个或多个字符
_:匹配指定;
[]:指定范围
[^]:排除范围
对于稍复杂点的关键词搜索(比如新闻),常用的办法是在数据库中添加一个keyword字段,来配合通配符进行模糊查询或分类查询或热门关键字查询。关于复杂点的模糊查询,更好的方法是不用这些通配符来实现,而是通过js来实现(例如输入时产生搜索提示),或其他方法来作,思路是尽量少的对数据库进行操作。
%:包含0个或多个字符
_:匹配指定;
[]:指定范围
[^]:排除范围
对于稍复杂点的关键词搜索(比如新闻),常用的办法是在数据库中添加一个keyword字段,来配合通配符进行模糊查询或分类查询或热门关键字查询。关于复杂点的模糊查询,更好的方法是不用这些通配符来实现,而是通过js来实现(例如输入时产生搜索提示),或其他方法来作,思路是尽量少的对数据库进行操作。
-
官方服务
- 官方网站
- 官方网站
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询