mysql - 在逗号分隔值列中查找逗号分隔子组的最佳 mysql 查询是什么

标签 mysql regex

我想查询数据库以获取以逗号分隔的值列中包含 IN、US、CH 的记录。

查询字符串:IN、US、EN

column values : IN,UST,EN,PC,US : Should match
column values : XR,TX,LN        : Should not match  
column values : XH,IN,ST        : Should match 

我使用了多个 where 条件,并在集合中查找每个值破坏查询字符串(IN、US、EN)

但我想要一些正则表达式 mysql 优化查询。

最佳答案

我不确定我是否理解了您的帖子,但以下提示也许对您有帮助。

我已经在 sqlfiddle 中检查过了

CREATE TABLE SO_TEST
    (`id` int,`country_code` char(100));

INSERT INTO SO_TEST
    (`id`, `country_code`)
VALUES
    (1, 'IN,UST,EN,PC,US'),
    (2, 'XR,TX,LN'),
    (3, 'XH,IN,ST');

这里是查询sql。

SELECT * FROM SO_TEST
WHERE concat(concat(',',country_code),',') REGEXP (concat(concat(',',REPLACE('IN,US,EN', ',', ',|,')),','))

输出结果:

| id | country_code    | 
+----+-----------------+
| 1  | IN,UST,EN,PC,US |
| 3  | XH,IN,ST        | 

查询sql是否有bug( sqlfiddle ):

SELECT * FROM SO_TEST
WHERE concat(concat(',',country_code),',') REGEXP (concat(concat(',',REPLACE('ST', ',', ',|,')),','))

输出结果:

| id | country_code    | 
+----+-----------------+
| 3  | XH,IN,ST        | 

关于mysql - 在逗号分隔值列中查找逗号分隔子组的最佳 mysql 查询是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37020716/

相关文章:

mysql - 在 Mysql 中使用 OrmLite SqlExpression 时检测到潜在的非法片段?

c# - RegEx 用空格替换字符串中的特殊字符? ASP.NET C#

c# - 正则表达式 c# 涉及数字和空格

regex - 使用 sed 过滤多行 pcregrep 匹配

javascript - 在Javascript中使用正则表达式来匹配特殊符号

mysql - 行复选框消失了phpmyadmin

javascript - fabric js 从 mysql 数据库加载单个对象到 Canvas

mysql - 使用注释在 Doctrine 2 中添加 FULLTEXT 索引?

php - 为选择查询临时向 MySQL 列中的数据添加一个字符

c# - .Net 简单正则表达式二次复杂度