繁体   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