sql 查询多个数据字段,并且满足多个关键字的方法?

来源:百度知道 编辑:UC知道 时间:2024/07/04 10:05:39
我想用SQL语句做网站内容查询,针对数据库中ProductInfo,itemcode,content三个字段同时进行查询,同时查询的关键字是多个需要同时满足的。我是这样写的:
sql="select * from ProductInfo where ProductName like '%"&keyword1&"%' and ProductName like '%"&keyword2&"%' and ProductName like '%"&keyword3&"%' or itemcode like '%"&keyword1&"%' and itemcode like '%"&keyword2&"%' and itemcode like '%"&keyword3&"%' or content like '%"&keyword1&"%' and content like '%"&keyword2&"%' and content like '%"&keyword3&"%'"
但是这样写的话,实在是太繁杂了,keyword1,keyword2,keyword3,我用的是数组。请问有没有更加简洁方便的写法。像SELECT * FROM 学生 WHERE 城市 In ('广州市','深圳市','汕头市'),这样的写法一样比较简洁的。谢谢了!
一楼的理解错我的意思了。你那样把1,2,3关键字合并为一个就达不到我的目的了。我的查询关键字本来是一个,如:keyword="a b c",我是用split函数特意将a b c给分离出来的,为的是各作为不同的关键字查询。
是这样的,当用户输入一用空格分开的关键字的时候,我们就得将其分开成多个进行模糊查询,如输入"我 你 他"这样的关键字来查询,那么就得分别对“我”,“你”,“

我知道你的意思,但你的SQL的意思就是和合并没区别,因为你用的是AND,就是说ProductName字段中,既要有包含“我”,也要有包含“你”,同时还要包含“他”,因为你用的是LIKE+AND,所以你执行下直接合并的查询,结果绝对是完全一样的,
除非你不用AND,那么拆和不拆才有区别

ProductName like '%"&keyword1&"%' and ProductName like '%"&keyword2&"%' and ProductName like '%"&keyword3&"%'

我感觉没有更好的办法,其实你的举例,用in的时候查询的效率并不高的