多条件但字段不固定如何查询,请高手帮忙。
我在帮朋友开发一个搜索引擎,对某一个表查询的时候,字段是不固定的。如下:
phone 表字段如下:
ID
Phone_number
name
sex
address
email
mobile_number
......还有其它字段不多写了
在查询的时候用户可能输入如此条件如: 张三,13810124256 这两个条件是一个用户的姓名和移动电话,但是也可能是 62531534,李四,这个条件是一个固话和姓名,请问这样的查询针对一个表如何查询。
------解决方案--------------------sql= "select * from phone where xxx " '最好先默认有个条件
'判断xxx
if id= " " then
sql=sql
else
sql_id= " and "+ "id= ' "& id & " ' "
sql=sql+id
end if
'判断yyy
if name= " " then
sql=sql
else
sql_name= " and "+ " name= "& name & " "
sql=sql+sql_name
end if
....
...
sqlb= " "&sql '最后+这个
response.write "sqlb= "&sql '输出检查,看条件是否正确
rs.open sqlb,conn,1,1
------解决方案--------------------楼主就得先判断相应的字段是否为空。如果不为空就在sql语句上加上相应条件就可以了
------解决方案-------------------- 如 输入: 别人 字段
select * from table where keyCol like '别人 字段% '(这里表里一个字段)
你的一个框,怎么区分 是名字还是别的?
------解决方案--------------------这里面的问题和楼主说的情形类似
http://community.csdn.net/Expert/topic/5317/5317177.xml?temp=.8024866
------解决方案--------------------用几个输入框,提示用户在不同的地方输入关键字,然后用程序判断各个输入框是否为空,如果不为空,则把相应的关键字加入到搜索条件中即可。例如:
Dim strSQL,strTmp
strTmp = " Where "
'如果输入了电话号码,准确查询
If Trim(Request.Form( "Phone_number ")) <> " " Then strTmp = strTmp & " Phone_number= " & Trim(Request.Form( "Phone_number "))
'如果输入了姓名,模糊查询
If Trim(Request.Form( "Name ")) <> " " Then strTmp = strTmp & " Name Like '% " & Trim(Request.Form( "Name ")) & "% ' "
If strTmp = " Where " Then
strSQL = "Select * From TableName "
Else
strSQL = "Select * From TableName " & strTmp
End If