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

作多選功能時爲了簡便,會在某個字段中存儲多個值,保存時雖然省事,但後續的查詢統計時還須要拆分數據才行,所以這時須要將字段內的值分紅多行以便後續使用。測試

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

--建立測試表
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;

效果對比:code

拆分前的原始數據:regexp

拆分後的數據:blog

 

項目中用到,記錄分享。table

相關文章
相關標籤/搜索