Oracle中REGEXP_SUBSTR函數(shù) Oracle中REGEXP_SUBSTR函數(shù)的使用說明: 題目如下: 在oracle中,,使用一條語句實現(xiàn)將'17,20,23'拆分成'17','20','23'的集合,。 REGEXP_SUBSTR函數(shù)格式如下: function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier) __srcstr :需要進(jìn)行正則處理的字符串 __pattern :進(jìn)行匹配的正則表達(dá)式 __position :起始位置,,從第幾個字符開始正則表達(dá)式匹配(默認(rèn)為1) __occurrence :標(biāo)識第幾個匹配組,默認(rèn)為1 __modifier :模式('i'不區(qū)分大小寫進(jìn)行檢索,;'c'區(qū)分大小寫進(jìn)行檢索,。默認(rèn)為'c'。) 1,、查詢使用正則分割后的第一個值,,也就是17 [sql] SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL; 結(jié)果: www. STR ----- 17 2、查詢使用正則分割后的最后一個值,,也就是23 [sql] SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,3,'i') AS STR FROM DUAL; 結(jié)果: STR ---- 23 3,、獲取一個多個數(shù)值的列,從而能夠讓結(jié)果以多行的形式展示出來 [sql] SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=7; 結(jié)果: www. LEVEL ---- 1 2 3 4 5 6 7 4,、將上面REGEXP_SUBSTR的occurrence關(guān)聯(lián) [sql] SELECT NVL(REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i'), 'NULLL') AS STR FROM DUAL CONNECT BY LEVEL <= 7; STR www. ---- 17 20 23 NULL NULL NULL NULL 5,、優(yōu)化上面的SQL語句,讓生成的行的數(shù)量符合實際情況 [sql] SELECT REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i') AS STR FROM DUAL CONNECT BY LEVEL <= LENGTH('17,20,23') - LENGTH(REGEXP_REPLACE('17,20,23', ',', ''))+1; STR ---- 17 20 23 轉(zhuǎn)載自http://www./database/201209/154045.html |
|