如何将Group_Concat()结果拆分为不同的列?我不想在用逗号分隔的同一单元格中显示它。

最佳答案

如果您知道定界符,则可以在将SUBSTRING_INDEX包裹在subquery中之后使用两次。

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SomeColumn, '.', 3), '.', -1)
    FROM (
        SELECT GROUP_CONCAT(...) AS SomeColumn
            FROM ...
    ) AS SomeTable



第一个SUBSTRING_INDEX从第一个-> n获取字符串
第二个SUBSTRING_INDEX从第一个-> n-1中删除字符串


检查此SQLFiddle示例

在您的情况下,如果您知道列数,那么查询将类似于(假设您有5个用逗号分隔的字符串):

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SomeColumn, '.', 1), '.', -1)
    , SUBSTRING_INDEX(SUBSTRING_INDEX(SomeColumn, '.', 2), '.', -1)
    , SUBSTRING_INDEX(SUBSTRING_INDEX(SomeColumn, '.', 3), '.', -1)
    , SUBSTRING_INDEX(SUBSTRING_INDEX(SomeColumn, '.', 4), '.', -1)
    , SUBSTRING_INDEX(SUBSTRING_INDEX(SomeColumn, '.', 5), '.', -1)
    FROM (
        SELECT GROUP_CONCAT(...) AS SomeColumn
            FROM ...
    ) AS SomeTable

关于mysql - 分割MySQL Group_Concat()的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37983570/

10-12 20:13