1. 程式人生 > 實用技巧 >PLSQL Split分割字串

PLSQL Split分割字串

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

系統自帶的split,使用起來方便,但是如果字串太長,可能會出現異常,這裡,我自己寫了一個也是該名字,放在自己的包中,引用的時候帶包名就好了。

複製程式碼

--系統自帶的函式
/*CURSOR cur_temp IS*/
    SELECT COLUMN_VALUE AS ass_code FROM TABLE(split('ss,aa,aa', ','));

複製程式碼

/*========================================================
    Description:    分割字串函式,用引數二(預設逗號),分割成字串1為 多列
                   (此處,我的做法是分割到零時表中,然後可迴圈讀取等)
  ==========================================================*/
  FUNCTION split(p_list VARCHAR2, p_sep VARCHAR2 := ',') RETURN type_split
    PIPELINED IS
    l_idx  PLS_INTEGER;
    v_list VARCHAR2(4000) := p_list; --長度多給點
  BEGIN
    --迴圈遞迴
    LOOP
      l_idx := instr(v_list, p_sep);  --獲取位置
      IF l_idx > 0
      THEN
        PIPE ROW(substr(v_list, 1, l_idx - 1));  --擷取
        v_list := substr(v_list, l_idx + length(p_sep));--遞迴
      ELSE
        PIPE ROW(v_list);
        EXIT;
      END IF;
    END LOOP;
    RETURN;
  END split;

複製程式碼

分割到行中了,這下我們就可以方便操作了。

分享共進步,謝謝閱讀!

轉載於:https://my.oschina.net/youfen/blog/1920833