读书人

把行转为列values是动态的请高人指

发布时间: 2012-09-24 13:49:41 作者: rapoo

把行转为列,values是动态的,请高人指点下
select values from t
values
a,b,c,d
但是我想要的结果是,请高人指点,tks!
values
a
b
c
d

[解决办法]

SQL code
with test as(     select 'aaa' a,'1,2,3' c from dual union all     select 'bbb' a,'1,2' c from dual)    select a,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 cfrom (select a,',' || c || ',' AS ca,length(c || ',') - nvl(length(REPLACE(c, ',')), 0) AS cnt FROM test)t,    (select LEVEL lv from dual CONNECT BY LEVEL <= 100) c where c.lv <= t.cntorder by a    a    c---------------------1    aaa    12    aaa    23    aaa    34    bbb    25    bbb    1
[解决办法]
SQL code
with t as(select 'a,b,c,d' str from dual)SELECT regexp_substr(str, '[^,]+', 1, level)  from tconnect by level <= length(str) - length(replace(str, ',', '')) + 1;REGEXP_SUBSTR(STR,'[^,]+',1,LE------------------------------abcd
[解决办法]
select regexp_substr(values, '[^,]+',1,levle)
from t
connect by level <= length(values) - length(replace(values,',','')) + 1

读书人网 >oracle

热点推荐