我当前正在使用以下查询来获取单个逗号分隔值:
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(name, ',', numbers.n), ',', -1) name
FROM
(SELECT 1 n UNION ALL SELECT 2
UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) numbers INNER JOIN mytable
ON CHAR_LENGTH(name)
-CHAR_LENGTH(REPLACE(name, ',', ''))>=numbers.n-1 where SUBSTRING_INDEX(SUBSTRING_INDEX(name, ',', numbers.n), ',', -1) = 'm';
我想知道是否有更好的方法可以做到这一点,因为它不适用于大量逗号分隔值,因为我使用的是 SELECT 1 n UNION ALL SELECT 2
等等获取多个逗号分隔值
最佳答案
是的,有更好的方法。将表格和数据转换为 3NF 表格布局。这样,为数据库编写查询就容易得多。
关于mysql - 在mysql中有效地在列中获取大量逗号分隔值的逗号分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45377526/