我在使用MySQL的FIND_IN_SET函数搜索set中的数组时遇到了限制。因此考虑使用REGEXP。但是,任何人都可以帮我构建它。
E.g。我的要求
SELECT * FROM table AS t WHERE FIND_IN_SET('1,2,3', t.list);
因此考虑使用REGEXP函数来搜索集合中的数组。
SELECT * FROM table AS t WHERE t.list REGEXP '1,2,3';
任何人都可以帮我构建这个REGEXP。
答案 0 :(得分:1)
你可以这样做:
SELECT * FROM table AS t WHERE t.list REGEXP '^9,|,9$|,9,' OR t.list =9
答案 1 :(得分:1)
您可以拆分搜索字符串并继续使用FIND_IN_SET()
SELECT *
FROM `table` AS t
WHERE FIND_IN_SET('1', t.list)
AND FIND_IN_SET('2', t.list)
AND FIND_IN_SET('3', t.list)
通过引入多对多表来更好地规范化您的数据。
答案 2 :(得分:0)
根据您的要求,您可以轻松使用:
SELECT *
FROM table1 AS t
WHERE t.list REGEXP '1|2|3';
要了解正则表达式,请查看此软件: http://www.weitz.de/regex-coach/
答案 3 :(得分:0)
尝试以下sql语句:
SELECT *
FROM table AS t
WHERE t.list REGEXP '^(1$|2$|3$)';