我有查询
SELECT * FROM images WHERE tags LIKE '%example%hello%'
我希望数据库以任何顺序选择'tags'列中包含'example'和'hello'的行,如:
包含'hello,test,example'的行,还有'example,hello,test'或此订单的任何其他变体。 这是否可能,即使不使用LIKE?这些行必须包含LIKE指定的所有内容。
编辑:例如,当我在查询中提供'example'和'hello'时,返回的行必须包含'example'和'hello'。
答案 0 :(得分:2)
您可以尝试使用简单的OR
来快速解决问题:
SELECT * FROM images WHERE tags LIKE '%example%' OR tags LIKE '%hello%'
修改强>
要解决您的修改问题,您可以改为使用AND
:
SELECT * FROM images WHERE tags LIKE '%example%' AND tags LIKE '%hello%'
答案 1 :(得分:0)
您可以使用FIND_IN_SET
:
SELECT tags FROM images WHERE FIND_IN_SET('hello', tags) AND FIND_IN_SET('example', tags)
但是,这要求标记在逗号后面没有空格(在这种情况下,您必须在tags
或更多布尔检查上进行替换)。这可能比LIKE
更快。我不确定。