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

标签 mysql

我有一个像这样的sql表: 1 [sql表图片] 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 等等获取多个逗号分隔值

最佳答案

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

关于mysql - 在mysql中有效地在列中获取大量逗号分隔值的逗号分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45377526/

相关文章:

mysql - 需要结合时间戳字段日期和varchar字段时间

mysql - phpMyAdmin 安装 - 错误 1045 : Acces denied (using: password: NO)

php - 如何成功地将每个循环的所有值发布到 mysql 数据库

mysql - SQL在预订系统中查找连续两天

mysql - 绕过where子句的子查询

php - Mysql数据库在通过php提交时有时会输入空白行,否则效果很好。如何避免这种情况?

php - 如何将多维与特定值合并

没有数据库名称的mysqldump

mysql if语句中的多个条件

mysql - 在 sql 函数中为 customerID 分配正确的值