Oracle數據庫字段數據拆分成多行(REGEXP_SUBSTR函數)


做多選功能時為了簡便,會在某個字段中存儲多個值,保存時雖然省事,但后續的查詢統計時還需要拆分數據才行,因此這時需要將字段內的值分成多行以便后續使用。

下面這個例子實現了字段內數據的拆分:

--創建測試表
create table t_test(
       t_type_id varchar2(10) primary key,--主鍵
       t_type_name varchar2(20),--類型名稱
       t_text varchar2(200)--類型內容
);

--寫入數據
insert all
into t_test values('001','家具','桌子,椅子,沙發,櫃子,床')
into t_test values('002','設備','顯示器,電腦,鼠標,鍵盤,投影儀')
into t_test values('003','辦公用品','筆記本,簽字筆,文件夾')
select 1 from dual;

--查看表數據
select * from t_test;

--類型內容字段拆分成多行
SELECT distinct t.t_type_id,
                t.t_type_name,
                REGEXP_SUBSTR(t.t_text, '[^,]+', 1, level) t_text
  from t_test t
connect by level <=
           LENGTH(t.t_text) - LENGTH(regexp_replace(t.t_text, ',', '')) + 1
 order by t.t_type_id, t.t_type_name;

--刪除測試表
drop table t_test;

效果對比:

拆分前的原始數據:

拆分后的數據:

 

項目中用到,記錄分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM