在mysql中有效地获取大量逗号分隔值的列中的逗号分隔字符串

时间:2017-07-28 15:43:14

标签: mysql

我有一个喜欢这个的sql表: 1 [sql table image] 1

我目前正在使用以下查询来获取单个逗号分隔值:

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等等以获得多个逗号分隔值< / p>

1 个答案:

答案 0 :(得分:0)

是的,还有更好的方法。将表和数据转换为3NF表格布局。这样,为数据库编写查询就容易得多。