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


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

引用地址 https://blog.csdn.net/qq_26641273/article/details/81779371

在使用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//這句話照抄,不要改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM