编写一个sql语句,把b列中的数据用逗号分隔开,变成很多?谢谢
发布网友
发布时间:2022-04-08 09:43
我来回答
共3个回答
热心网友
时间:2022-04-08 11:13
这个我做过,拆分逗号分隔符变列
select a,
t.ca,
c.lv,instr(t.ca, ',', 1, c.lv) + 1,
substr(t.ca,
instr(t.ca, ',', 1, c.lv) + 1,
instr(t.ca, ',', 1, c.lv + 1) -
(instr(t.ca, ',', 1, c.lv) + 1)) AS c
from (select a,
',' || b || ',' AS ca,
b,
LENGTH(b),
length(b || ','),
REPLACE(b, ','),
length(REPLACE(b, ',')), --删除逗号的长度
nvl(length(REPLACE(b, ',')), 0), --空值长度为空,因此要将空值替换为0
length(b || ',') - nvl(length(REPLACE(b, ',')), 0) AS cnt --以逗号分隔的字符串个数,先在原来的长度上加1 计算去除所有逗号后字符串长度,再,拿这个
FROM TEST_A) t,
(select LEVEL lv from al CONNECT BY LEVEL <= 100) c
where c.lv <= t.cnt --逗号数量在100以内
热心网友
时间:2022-04-08 12:31
select to_char(listagg(B, ', ') within group(order by B))
from (select 1 as B
from al
union
select 2 AS B
from al
union
select 3 AS B from al)
热心网友
时间:2022-04-08 14:05
你有没有想过,变成很多之后放在哪里?追问还放在数据库中的表里面。
追答百度一下oracle split函数,有很多写好的.
ps:每个逗号分开一列?你知道有多少列?