ORACLE拆分逗號隔開的某個字段的值(轉載)

ORACLE拆分逗號隔開的某個字段的值

在使用ORACLE查詢時,咱們常常會用到某個字段存的值是逗號分割開的,然而在查詢時候須要將這個字段的值進行分開顯示:

    REGEXP_SUBSTR函數格式以下:

function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)

__srcstr :須要進行正則處理的字符串

__pattern :進行匹配的正則表達式

__position :起始位置,從第幾個字符開始正則表達式匹配(默認爲1)

__occurrence :標識第幾個匹配組,默認爲1

__modifier :模式('i’不區分大小寫進行檢索;‘c’區分大小寫進行檢索。默認爲’c’。)
舉例

如今有一張表名叫TB_JH_TEST,存以下字段:
WID     TYPE     NAME     PRICE
70144C876FBDCE98E050007F01006964     2,4     測試1     5
72707CB34C36E467E050007F01006202     1,2,4     測試2     12
70D9E23382CD8074E050007F01005D5A     1,5     測試3     234

如今咱們將wid=72707CB34C36E467E050007F01006202的這條數據的TYPE字段拆分,oracle語句以下:

select
  WID, //須要查詢表中的的字段,惟一主鍵
  "NAME",//須要查詢表中的的字段
  regexp_substr(TYPE, '[^,]+', 1, level) TYPE,//須要拆分的字段,直接把TYPE換成你要拆分的那個字段便可
  PRICE//須要查詢表中的的字段
from
TB_JH_TEST //表名
where
 WID='72707CB34C36E467E050007F01006202'//你若是有條件,在此處加上便可,沒有的話去掉就是拆分全部的
connect by level <= regexp_count(TYPE, ',') + 1 //須要拆分的字段,直接把TYPE換成你要拆分的那個字段便可
and WID = prior WID//須要查詢表中的的字段,惟一主鍵,把WID換成你表中的惟一主鍵便可,其餘不變
and prior dbms_random.value is not null//這句話照抄,不要改


###執行結果
正則表達式

相關文章
相關標籤/搜索