MySQL:使用'REGEXP'而不是'FIND_IN_SET'

时间:2014-01-15 06:41:12

标签: mysql regex find-in-set

我在使用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。

4 个答案:

答案 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$)';