0

我在使用 MySQL 的FIND_IN_SET函数来搜索集合中的数组时遇到了限制。因此考虑使用REGEXP。但是,任何人都可以帮助我构建它。

例如我的要求

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

4 回答 4

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)

通过引入多对多表更好地规范您的数据。

于 2014-01-15T06:56:09.097 回答
1

你可以这样做:

SELECT * FROM table AS t WHERE t.list REGEXP '^9,|,9$|,9,' OR t.list =9
于 2014-01-15T06:44:32.123 回答
0

试试下面的 sql 语句:

SELECT * 
FROM table AS t 
WHERE t.list REGEXP '^(1$|2$|3$)';
于 2014-01-15T07:15:54.850 回答
0

根据您的要求,您可以轻松使用:

SELECT * 
FROM table1 AS t 
WHERE t.list REGEXP '1|2|3';

要了解正则表达式,请查看此软件: http ://www.weitz.de/regex-coach/

于 2014-01-15T06:54:41.057 回答