gpt4 book ai didi

mysql - SQL 中的多个 LIKE

转载 作者:可可西里 更新时间:2023-11-01 07:47:04 26 4
gpt4 key购买 nike

我想搜索多行并获取包含特定项目的行。

mySQL 中的表已设置,因此每个 id 每行都有一个唯一的值列表(以逗号分隔)。

例如:

id | order
1 | 1,3,8,19,34,2,38
2 | 4,7,2,190,38

现在,如果我想拉出仅包含数字 19 的行,我该怎么做呢?我可以在具有 LIKE 条件的列表中计算出的可能性是:

19,     <-- 19 at the start of the list
,19 <-- 19 at the end of the list
,19, <-- 19 inside the list

我尝试了以下方法,但无法获得任何结果,谢谢您的帮助!

SELECT *
FROM categories
WHERE order LIKE '19,%' OR '%,19%' OR '%,19%'
LIMIT 0 , 30

最佳答案

首先,您不应该像这样存储值,您应该使用一个子表,每个项目一行,这将使您当前的查询更容易处理,并允许使用索引。

话虽如此,你想要的是:

WHERE ',' + order + ',' LIKE '%,19,%'

通过在 order 字段中的值列表前后添加一个逗号,您可以在该字段中查询您想要的值,每边都有一个逗号,而不必处理值的特殊情况是列表中的第一个或最后一个值。

对于您列出的查询,您可以通过意识到 OR 没有为 LIKE 子句提供更多参数,而是将完全不同的子句分开来使其工作,然后像这样重写了 SQL:

WHERE order LIKE '19,%' OR order LIKE '%,19,%' OR order LIKE '%,19'
---+------ ^ ----+----- ^
| | | |
+- add this -+---------+ +- removed
percent

注意 那里第二个模式中缺少的逗号,它将匹配包含值 19 的字符串,并注意最后一个删除的百分比字符,这将允许它匹配以 19 结尾的列表.

关于mysql - SQL 中的多个 LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2940351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com