我想查询数据库以获取以逗号分隔的值列中包含 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/