想要使用多个术语时查询中 LIKE 子句的顺序
我有一个查询,
SELECT * FROM images WHERE tags LIKE '%example%hello%'
我希望数据库以任意顺序选择“标签”列中具有“示例”和“你好”的行,如下所示:
带有“你好,测试,示例”的行,还有“示例,你好” 、测试'或该顺序的任何其他变体。 即使不使用 LIKE,这也可能吗?这些行必须全部包含用 LIKE 指定的所有内容。
编辑:例如,当我在查询中提供“example”和“hello”时,返回的行必须包含“example”和“hello”。
I have the query
SELECT * FROM images WHERE tags LIKE '%example%hello%'
I would like the database to select rows which have 'example' and 'hello' in the 'tags' column in any order, as in:
A row with 'hello, test, example', also 'example, hello, test' or any other variation of this order.
Is this possible, even without using LIKE? The rows must all contain everything specified with LIKE.
EDIT: Such as, when I provide 'example' and 'hello' in the query, rows returned must contain both 'example' and 'hello'.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以尝试使用简单的
OR
来快速解决问题:编辑
要进行编辑,您可以使用
AND
代替:You could try a simple
OR
for a quick solution:EDIT
To address your edit, you can use
AND
instead:您可以使用
FIND_IN_SET
:但是,这要求标签在逗号后不能有空格(在这种情况下,您必须对
tags
进行替换或进行更多布尔检查)。这可能比LIKE
更快。我不知道。You could use
FIND_IN_SET
:However, this requires that tags not have spaces after the comma (you will have to do replace on
tags
or more boolean checks in that case). This might be faster thanLIKE
. I'm not sure.