oracle 的 regexp_substr()的用法


將字符串'1-2' 截取出來成1 、2,然后通過這兩個值查出數據張三、李四  ,拼接起來成'張三-李四'

oracle 語法

SELECT replace(WMSYS.WM_CONCAT(wrxm), ',', '-') FROM 
       (SELECT regexp_substr('3071-9036-8719', '[^-]+', 1,rownum) col1 
        FROM dual CONNECT BY ROWNUM <= LENGTH ('3071-9036-8719') - LENGTH 
        (REPLACE ('3071-9036-8719', '-', ''))+1) t1 left join wrxxb t2 on t1.col1=t2.id

--執行結果--

REPLACE(WMSYS.WM_CONCAT(WRXM),',','-')

葉寶仙-李成梁-黎又明

wmsys.wm_concat():

Oracle中的wmsys.wm_concat主要實現行轉列功能(說白了就是將查詢的某一列值使用逗號進行隔開拼接,成為一條數據)

若使用了WMSYS.WM_CONCAT函數,應盡量不要對查詢結果進行distinct,union,和group by操作,避免oracle版本的差異化

regexp_substr():

格式

REGEXP_SUBSTR (source_string, pattern
              [, position
                 [, occurrence
                    [, return_option
                       [, match_parameter ]
                    ]
                 ]
              ]
            ) 

參數說明:

source_string:輸入的字符串
pattern:正則表達式
position:標識從第幾個字符開始正則表達式匹配。(默認為1)
occurrence:標識第幾個匹配組。(默認為1)
return_option:0——返回第一個字符出現的位置。1:pattern下一個字符起始位置。
match_parameter:取值范圍
        i:大小寫不敏感;
        c:大小寫敏感;
        n:點號 . 不匹配換行符號;
        m:多行模式;

        x:擴展模式,忽略正則表達式中的空白字符。 

擴展:

ORACLE中的支持正則表達式的函數主要有下面四個:
1,REGEXP_LIKE :與LIKE的功能相似
2,REGEXP_INSTR :與INSTR的功能相似
3,REGEXP_SUBSTR :與SUBSTR的功能相似
4,REGEXP_REPLACE :與REPLACE的功能相似
它們在用法上與Oracle SQL 函數LIKE、INSTR、SUBSTR 和REPLACE 用法相同。

 


免責聲明!

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



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