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