最近優化FORM中的查詢條件遇到某個字段可以選取多個值的問題,思路當然就是選取時將多個值通過某個符號拼接起來,查詢數據的時候將拼接后的字符串按照符號分割開,在分割逗號的時候用到了一個新的方法REGEXP_SUBSTR,記錄一下。該方法分割所有的逗號,返回多行。
SELECT regexp_substr(p_item_code, '[^,]+', 1, LEVEL) AS pscode
FROM dual
CONNECT BY LEVEL <= length(p_item_code) + 1 -length(REPLACE(p_item_code, ',', ''))
方法說明:REGEXP_SUBSTR(String,pattern,position,occurrence,modifier)
參數說明:
參數1:帶分割字符串,在此處即為開始拼接起來的字符串
參數2:正則表達式,此處用的'[^,]+'表示匹配一個或多個不是“,”的字符。
參數3:起始位置,從第幾個字符開始正則表達式匹配,默認是1
參數4:標識第幾個匹配組,默認為1
參數5:匹配模式,i不區分大小寫進行檢索,c區分大小寫進行檢索,默認是c