想要使用多个术语时查询中的LIKE子句的顺序

时间:2011-10-27 00:02:51

标签: php mysql select sql-like

我有查询

SELECT * FROM images WHERE tags LIKE '%example%hello%'

我希望数据库以任何顺序选择'tags'列中包含'example'和'hello'的行,如:

包含'hello,test,example'的行,还有'example,hello,test'或此订单的任何其他变体。 这是否可能,即使不使用LIKE?这些行必须包含LIKE指定的所有内容。

编辑:例如,当我在查询中提供'example'和'hello'时,返回的行必须包含'example''hello'。

2 个答案:

答案 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更快。我不确定。