如何在 PostgreSQL 中按字符分割字符串并在每个字符后添加新行
例如
num desc
1 Hello
2 Bye
num desc
1 H
e
l
l
o
2 B
y
e
Run Code Online (Sandbox Code Playgroud)
小智 6
select num, regexp_split_to_table(descr,'')
from the_table
order by num;
Run Code Online (Sandbox Code Playgroud)
SQLFiddle: http: //sqlfiddle.com/#!15/13c00/ 4
然而,不能保证字符的顺序,并且实现这一点有点复杂。
基于埃尔文关于这个问题的回答:
select case
when row_number() over (partition by id order by rn) = 1 then id
else null
end as id_display,
ch_arr[rn]
from (
select *,
generate_subscripts(ch_arr, 1) AS rn
from (
select id,
regexp_split_to_array(descr,'') as ch_arr
from data
) t1
) t2
order by id, rn;
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您只想为每个 id 使用一个字符串,其中字符由换行符分隔,则可以使用以下命令:
select id,
array_to_string(regexp_split_to_array(descr,''), chr(10))
from data
order by id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8266 次 |
| 最近记录: |