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

发布于 2024-12-12 06:26:32 字数 311 浏览 0 评论 0原文

我有一个查询,

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寂寞陪衬 2024-12-19 06:26:32

您可以尝试使用简单的 OR 来快速解决问题:

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

编辑

要进行编辑,您可以使用 AND 代替:

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

You could try a simple OR for a quick solution:

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

EDIT

To address your edit, you can use AND instead:

SELECT * FROM images WHERE tags LIKE '%example%' AND tags LIKE '%hello%'
勿忘心安 2024-12-19 06:26:32

您可以使用FIND_IN_SET

SELECT tags FROM images WHERE FIND_IN_SET('hello', tags) AND FIND_IN_SET('example', tags)

但是,这要求标签在逗号后不能有空格(在这种情况下,您必须对tags进行替换或进行更多布尔检查)。这可能比 LIKE 更快。我不知道。

You could use FIND_IN_SET:

SELECT tags FROM images WHERE FIND_IN_SET('hello', tags) AND FIND_IN_SET('example', tags)

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 than LIKE. I'm not sure.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文