我有一个用逗号分隔的字符串。
现在我想将此字符串值分成每一行。
输入:
1,2,3,4,5
必填输出:
value
----------
1
2
3
4
5
如何在sql中实现呢?
谢谢。
答案 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
)