簡體   English   中英

是否可以使用“?” oracle sql中的正則表達式內是否有“ =”和“?<=”限定符?

[英]Is there any possibility of using “? =” and “?<=” qualifiers inside the regular expressions in oracle sql?

在oracle sql的正則表達式中是否有可能使用?=?<=限定詞?

您可以使用TRANSLATE ,但是我認為這並不容易維護。 您也可以使用regexp_replace函數。 基本上,您將替換所有單詞,但替換每個單詞的第一個字母。

-- Solution 1
WITH T AS (
            SELECT 'Fredy Mercury' str FROM dual UNION ALL
            SELECT 'Hello World' FROM dual UNION ALL
            SELECT 'Abc Def Ghi Klm Opq' FROM dual UNION ALL
            SELECT 'As far as I know' FROM dual
            )  
SELECT str,
        TRANSLATE(INITCAP(str)
                    ,'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz'
                    ,'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
    FROM T;

-- Solution 2     
WITH T AS (
        SELECT 'Fredy Mercury' str FROM dual UNION ALL
        SELECT 'Hello World' FROM dual UNION ALL
        SELECT 'Abc Def Ghi Klm Opq' FROM dual UNION ALL
        SELECT 'As far as I know' FROM dual
        )  
SELECT str, UPPER(regexp_replace(str,'(\w{1})\w*(\W+|$)','\1')) FROM T;

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM