做多選功能時為了簡便,會在某個字段中存儲多個值,保存時雖然省事,但后續的查詢統計時還需要拆分數據才行,因此這時需要將字段內的值分成多行以便后續使用。
下面這個例子實現了字段內數據的拆分:
--創建測試表 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;
效果對比:
拆分前的原始數據:
拆分后的數據:
項目中用到,記錄分享。