Oracle中REGEXP_SUBSTR函數

列子:
一條語句實現將'a,b,c'拆分紅'a','b','c'三條記錄。
 
1、REGEXP_SUBSTR函數的使用說明:
 
Regexp_Substr(String,pattern,position,occurrence ,modifier )一共包含了五個參數:
 
String:操做的字符串;
 
pattern:正則表達式匹配規則,匹配到則返回;
 
position:開始匹配的位置,默認固然是1;
 
occurrence:標識第幾個匹配組,默認爲1
 
modifier:模式(‘i‘不區分大小寫進行檢索,‘c‘區分大小寫進行檢索。默認爲‘c‘)
 
2、 REGEXP_COUNT函數的使用說明

Oracle的11g引入此函數正則表達式

REGEXP_COUNT ( source_char, pattern [, position [, match_param]])oracle

REGEXP_COUNT 返回pattern 在source_char 串中出現的次數。若是未找到匹配,則函數返回0。position 變量告訴Oracle 在源串的什麼位置開始搜索。在開始位置以後每出現一次模式,都會使計數結果增長1。函數

match_param 變量支持下面幾個值:spa

‘i’ 用於不區分大小寫的匹配
‘c’ 用於區分大小寫的匹配
‘n’ 容許句點(.)做爲通配符去匹配換行符。若是省略該參數,則句點將不匹配換行符
‘m’ 將源串視爲多行。即Oracle 將^和$分別看做源串中任意位置任何行的開始和結束,而不是僅僅看做整個源串的開始或結束。若是省略該參數,則Oracle將源串看做一行。
‘x’ 忽略空格字符。默認狀況下,空格字符與自身相匹配。3d

select REGEXP_COUNT('GEORGE','GE',1,'i')  
   from DUAL;blog

 
 
 
一、取分割後的全部結果 ( level  oracle關鍵字,表示查詢深度,用來實現層級查詢)

SELECT REGEXP_SUBSTR('a,b,c', '[^,]+', 1, LEVEL)  AS COL  字符串

 FROM DUAL  it

CONNECT BY LEVEL <= REGEXP_COUNT('a,b,c' , ',') + 1
 
結果:
相關文章
相關標籤/搜索