日期:2014-05-17  浏览次数:21167 次

多条件但字段不固定如何查询,请高手帮忙。
我在帮朋友开发一个搜索引擎,对某一个表查询的时候,字段是不固定的。如下:

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