[英]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.