很抱歉,如果已经有人问过这个问题,那就很难搜索。
我有一个列,其中包含“苹果,葡萄,橙,香蕉,梨”之类的单词列表
如果我想查找包含某个单词的行,我会使用如下查询:
SELECT * FROM tablename WHERE 'apple' IN(list_of_words)
但是,我想要做的是查找包含多个单词的所有行。像这样的东西,这是行不通的:
SELECT * FROM tablename WHERE 'apple' IN(list_of_words) AND 'orange' IN(list_of_words)
使用类似的东西:
WHERE list_of_words LIKE "%grape%" AND list_of_words LIKE "%apple%"
也不行,因为它会找到“葡萄柚”和“海棠”
有没有简单的方法可以在SQL中内置这个?
感谢。
答案 0 :(得分:3)
您可以使用FIND_IN_SET
:
SELECT * FROM tbl_name WHERE FIND_IN_SET("orange", list_of_words) OR FIND_IN_SET("apple", list_of_words);
注意: list_of_words
在每个逗号后都应以逗号分隔,不能有空格才能生效