oracle split 字符分割函數
- 博客分類:
- 數據庫
oracle本身沒有字符分割函數,一個字符串分割後,要以一個結果集的方式存放,所以需要配合table一起用,分割後的字符串是一個數組,在oracle中,可以先按如下,創建一個類型,該類型就是split裏要返回的類型,如下:
Java代碼
- create or replace type strsplit_type as table of varchar2(500);
創建好類型了,下面是split函數的實現,引用到上面的類型.
Java代碼
- create or replace function str_split(p_value varchar2,
- p_split varchar2 := ',')
- return strsplit_type
- pipelined is
- v_idx integer;
- v_str varchar2(500);
- v_strs_last varchar2(4000) := p_value;
- begin
- loop
- v_idx := instr(v_strs_last, p_split);
- exit when v_idx = 0;
- v_str := substr(v_strs_last, 1, v_idx - 1);
- v_strs_last := substr(v_strs_last, v_idx + 1);
- pipe row(v_str);
- end loop;
- pipe row(v_strs_last);
- return;
- end str_split;
查詢測試一下:
Java代碼
- select distinct a.* from table(str_split('PROVINCE_DCG,PROVINCE_SA,PROVINCE_AN,PROVINCE')) a
.
返回結果:
1 PROVINCE_DCG
2 PROVINCE_SA
3 PROVINCE_AN
4 PROVINCE