我有查询
SELECT * FROM images WHERE tags LIKE '%example%hello%'
我希望数据库以任何顺序在'tags'列中选择具有'example'和'hello'的行,如:
包含'hello, test, example'的行,也包含'example, hello, test'或此顺序的任何其他变化。即使不使用LIKE,这可能吗?行必须包含用LIKE指定的所有内容。
编辑:例如,当我在查询中提供'example'和'hello'时,返回的行必须包含'example' 和 'hello'。
您可以尝试一个简单的OR
快速解决方案:
SELECT * FROM images WHERE tags LIKE '%example%' OR tags LIKE '%hello%'
编辑
要处理您的编辑,您可以使用AND
代替:
SELECT * FROM images WHERE tags LIKE '%example%' AND tags LIKE '%hello%'
您可以使用FIND_IN_SET
:
SELECT tags FROM images WHERE FIND_IN_SET('hello', tags) AND FIND_IN_SET('example', tags)
但是,这要求标签在逗号之后没有空格(在这种情况下,您必须在tags
或更多布尔检查上进行替换)。这可能比LIKE
快。我不确定。