我想查询数据库以获取以逗号分隔的值列为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
我使用multile,其中条件为每个值破坏查询字符串(IN,US,EN)的集合中的查找
但我想要一些正则表达式的mysql优化查询。
答案 0 :(得分:1)
我不确定我是否理解了你的帖子,但也许它会对你有所帮助。
中查了一下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 |