我在使用 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。
我在使用 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。
您可以拆分搜索字符串并继续使用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)
通过引入多对多表更好地规范您的数据。
你可以这样做:
SELECT * FROM table AS t WHERE t.list REGEXP '^9,|,9$|,9,' OR t.list =9
试试下面的 sql 语句:
SELECT *
FROM table AS t
WHERE t.list REGEXP '^(1$|2$|3$)';
根据您的要求,您可以轻松使用:
SELECT *
FROM table1 AS t
WHERE t.list REGEXP '1|2|3';
要了解正则表达式,请查看此软件: http ://www.weitz.de/regex-coach/