作多選功能時爲了簡便,會在某個字段中存儲多個值,保存時雖然省事,但後續的查詢統計時還須要拆分數據才行,所以這時須要將字段內的值分紅多行以便後續使用。測試
下面這個例子實現了字段內數據的拆分: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