SQL复合查询求助
sql="select * from 表名 where (年龄 like '%"&search1&"%' and 性别 like '%"&search2&"%' and 工作单位 like '%"&search3&"%' and 职务 like '%"&search4&"%' and 家庭住址 like '%"&search5&"%') order by id asc"
这样写查询语句可以吗?
年龄等从上一页面的文本框中获取,要求可以任选上述五个条件单个或者复合进行查询.
问题点数:5、回复次数:6Top
1 楼sy_binbin()回复于 2006-06-04 15:53:06 得分 0
sql = "select * from 表名 where "
if search1 <> "" then
sql1 = "年龄 like '%"&search1&"%'"
else
sql1 = ""
end if
if search2 <> "" then
sql2 = "性别 like '%"&search2&"%'"
else
sql2 = ""
end if
类似这样,你自己写写吧Top
2 楼boogo()回复于 2006-06-04 16:43:53 得分 0
这样穷举得多少代码啊?我想直接用一句SQL来实现.如果像这样的话,那还得写如下更多代码:
if search1 = "" and search2<>"" and search3<>"" and search4<>"" and search5<>""
if search1="" and search2="" and search3<>""and search4<>"" and search5<>""
if search1="" and search2="" and search3=""and search4<>"" and search5<>""
........
每个条件都要组合一句,那五个条件得组合1+2+3+4=10,
一定要这样才能实现吗?Top
3 楼kafly(王者)回复于 2006-06-04 16:52:42 得分 0
???
我怎么看着2楼已经教你怎么做了吧?他那怎么叫穷举呢?看仔细点,又不是把所有记录取出来用ASP判断,只是用ASP根据表单提交的变量组织SQL语句。
再有问题要问,年龄不是INT吗?为什么要用LIKE?性别不是两种吗?难道还有非男,非女?
一定要所有条件都写上吗?我就不能不填某些条件,用ASP来判断是否需要增加查询条件?
Top
4 楼kafly(王者)回复于 2006-06-04 16:54:45 得分 0
首先建议把表单修改一下。
年龄改成下拉菜单,可以选择年龄段;
性别改成单选按钮; ○ 男 ○ 女Top
5 楼kafly(王者)回复于 2006-06-04 17:05:54 得分 0
再给你说说LIKE是什么
LIKE是确定给定的字符串是否与指定的模式匹配,模式可以包含常规字符和通配符字符。
% ? 都是通配符,应该知道 dir *.exe吧?*号就是通配符
使用 % 通配符
如果指定 LIKE 'a%',将搜索所有以a开头的字符串
使用[]
LIKE '%[0-9]%' 搜索所有包含数字的字符串
LIKE '%[a-z]%' 搜索所有包含小写字母的字符串
!的用法
LIKE '%[!0-9]%' 不含数字的
Top
6 楼boogo()回复于 2006-06-04 23:02:38 得分 0
谢谢指正,我水平太菜,看不懂,不知二楼的这些SQL应当如何连接在一起呢?用&符合么?还是用+?
Top




