1. 程式人生 > >Oracle 欄位值按逗號拆分,變為多行資料

Oracle 欄位值按逗號拆分,變為多行資料

select distinct * from (
select regexp_substr(q.nums, '[^,]+', 1, Level,'i') order_num, names
  from (
  select '1,2,3' nums, '張三' names from dual
  union all
  select '4,5' nums, '李四' names from dual
  union all
  select '5,6' nums, '王五' names from dual
  ) q
connect by Level <= LENGTH(q.nums) - LENGTH(REGEXP_REPLACE(q.nums, ',', '')) + 1) order by order_num;
  1. 業務:把nums按逗號拆分為多行。
  2. REGEXP_SUBSTR函式格式如下:

function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)

__srcstr     :需要進行正則處理的字串

__pattern    :進行匹配的正則表示式

__position   :起始位置,從第幾個字元開始正則表示式匹配(預設為1)

__occurrence :標識第幾個匹配組,預設為1

__modifier   :模式('i'不區分大小寫進行檢索;'c'區分大小寫進行檢索。預設為'c'。)