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

sql多字段模糊搜索查询方法
我用asp写了一个简单的管理小程序,现在想制作一个模糊查询功能。
想要实现的效果是这样的。
字段:地区  时间  姓名  手机  备注
  1   北京   2013  王   1888565  你好
  2   南京   2013  张   1333636  我好
  3   北京   2013  李   166666   2012年小王


想在程序中输入字符串:“北京 王 2012

输出:3   北京   2013  李   166666   2012年

查询结果显示记录中所有字段含有字符串片段信息的记录
说白了,就是想把单条记录的字段数据整合后与字符串进行模糊比较。含有就显示。
这里不考虑程序代码如何编写的情况下
sql查询语句该如何写?谢谢

------解决方案--------------------
3个(5个or like '%arg[i]%' )的and组合:

where ( 字段1 like '%arg[1]%' or 
字段2 like '%arg[1]%' or
字段3 like '%arg[1]%' or
字段4 like '%arg[1]%' or
字段5 like '%arg[1]%' )

and ( 字段1 like '%arg[2]%' or 
字段2 like '%arg[2]%' or
字段3 like '%arg[2]%' or
字段4 like '%arg[2]%' or
字段5 like '%arg[2]%' )

and ( 字段1 like '%arg[3]%' or 
字段2 like '%arg[3]%' or
字段3 like '%arg[3]%' or
字段4 like '%arg[3]%' or
字段5 like '%arg[3]%' )

未经测试.

------解决方案--------------------
CREATE TABLE tbmulti
(aid int,
地区 varchar(30),
时间 varchar(30),
姓名 varchar(30),
手机 varchar(30),
备注 varchar(30)
)
insert into tbmulti
select 1,N'北京',N'2013',N'王',N'1888565',N'你好'
union all
select 2,N'南京',N'2013',N'张',N'1333636',N'我好'
union all 
select 3 ,N'北京',N'2013',N'李',N'166666',N'2012年小王'

select * from tbmulti
where
(
地区 like'%北京%'or
时间 like'%北京%'or
姓名 like'%北京%'or
手机 like'%北京%'or
备注 like'%北京%')
and
(
地区 like'%王%'or
时间 like'%王%'or
姓名 like'%王%'or
手机 like'%王%'or
备注 like'%王%')
and
(
地区 like'%2012%'or
时间 like'%2012%'or
姓名 like'%2012%'or
手机 like'%2012%'or
备注 like'%2012%')