1.REGEXP_SUBSTR函數.正則表達式
這個函數的做用是正則分隔字符串,用法爲sql
function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier)函數
參數說明:
參數1:string-待分割字符串;
參數2:pattern-正則表達式;
參數3:position-起始位置,從第幾個字符開始正則表達式匹配(默認爲1);
參數4:occurrence-標識第幾個匹配組,默認爲1;3d
參數5:modifier-模式('i'不區分大小寫進行檢索,'c'區分大小寫進行檢索,默認爲'c'.);code
1.分割字符串中全部的逗號,而後成多行.regexp
select regexp_substr(q.nums, '[^,]+', 1, rownum,'i'), namesblog
from (select '1,2,3' nums, '張三' names from dual) q
connect by rownum <= LENGTH(q.nums) - LENGTH(REGEXP_REPLACE(q.nums, ',', '')) + 1;字符串
執行結果:string
1.my sql code:it
SELECT test.AUDITED_UNIT, REGEXP_SUBSTR(test.AUDITED_UNIT, '[^,]+', 1, ROWNUM)
FROM (SELECT AUDITED_UNIT FROM AUDIT_PROJECT_APPROVED WHERE APPROVED_ID='3345463') test
CONNECT BY ROWNUM<=LENGTH(test.AUDITED_UNIT)-LENGTH(regexp_replace(test.AUDITED_UNIT, ',', ''))+1;
執行結果:
1.舉幾個例子說明下這個函數的用法:
select regexp_substr('1,2,3','[^,]+',1,1) result from dual;
執行結果:
select regexp_substr('1,2,3','[^,]+',1,2) result from dual;
執行結果:
3.字符串中逗號的數量是不肯定的,若是有2個逗號,須要提取的字段就是3個.
爲了肯定有多少個須要提取的字段,使用regexp_replace函數.
舉個列子:
select regexp_replace('1,2,3',',','') from dual;
執行結果: