将逗号分隔的字符串转换为行

时间:2019-03-10 16:50:57

标签: sql split

我有一个用逗号分隔的字符串。

现在我想将此字符串值分成每一行。

输入:

1,2,3,4,5

必填输出:

   value
----------
     1
     2
     3
     4
     5

如何在sql中实现呢?

谢谢。

3 个答案:

答案 0 :(得分:0)

如果您使用的是SQL Server,请使用STRING_SPLIT函数

SELECT value
FROM STRING_SPLIT('1,2,3,4,5', ',')

否则,您可以循环使用SUBSTRING_INDEX()函数,并将每个字符串插入临时表中。

答案 1 :(得分:0)

如果您使用的是Postgres,则可以使用string_to_array和unnest:

select *
from unnest(string_to_array('1,2,3,4,5',',') as t(value);

答案 2 :(得分:0)

在Postgres中,您还可以使用'regexp_split_to_table()'函数。

如果您使用的是MariaDB或MySQL,则可以使用递归CTE,例如:

with recursive itemtable as (
        select
            trim(substring_index(data, ',', 1)) as value,
            right(data, length(data) - locate(',', data, 1)) as data
        from (select '1,2,3,4,5' as data) as input
        union
        select
            trim(substring_index(data, ',', 1)) as value,
            right(data, length(data) - locate(',', data, 1)) as data
        from itemtable
    )