有一個表,存的資料大概是:
ID DESC
1 A,B,C,DE
2 M,LD,D,C
3 H,MM,SD,WE
如何拆分成:
ID DESC
1 A
1 B
1 C
1 DE
2 M
2 LD
2 D
2 C
3 H
3 MM
3 SD
3 WE
網上的資料大多是用regexp_substr 加上connect by 實作單個欄位拆分,但是此處是要求拆分后的結果帶上對應的ID序號,因為需要關聯ID來獲取對應拆分后的多行結果。
求大神賜教!
uj5u.com熱心網友回復:
and id = prior iduj5u.com熱心網友回復:
select id, regexp_substr(des, '[^,]+', 1, level) new_desfrom desc_info
connect by level <= regexp_count(des, ',') + 1
and prior rowid = rowid
and prior dbms_random.value is not null;
結果:
1 A
1 B
1 C
1 DE
2 M
2 LD
2 D
2 C
3 H
3 MM
3 SD
3 WE
uj5u.com熱心網友回復:
我要查詢 id =1 的資料拆分結果,
id desc
[align=left] 1 A
1 B
1 C
1 DE[/align]
應該怎么寫?
uj5u.com熱心網友回復:
with tmp as(select id, regexp_substr(des, '[^,]+', 1, level) new_des
from desc_info
connect by level <= regexp_count(des, ',') + 1
and prior rowid = rowid
and prior dbms_random.value is not null)
select * from tmp where id = 1;
1 A
1 B
1 C
1 DE
這個:[align=left] 不清楚是什么
uj5u.com熱心網友回復:
desc_info表有很大的資料量,這個查詢效率非常差
uj5u.com熱心網友回復:
這是遞回 性能肯定差。 而且他是把所有結果 生成的cet表 再select。
你可以把 where id=1 加在 拆分字符的那個sql上 直接查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/52460.html
標籤:開發
上一篇:創建view時有動態列的問題
