SQL> select ename,regexp_replace(ename,'[[:upper:]]+') from emp;
ENAME REGEXP_REPLACE(ENAME
-------------------- --------------------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
ENAME REGEXP_REPLACE(ENAME
-------------------- --------------------
JAMES
FORD
MILLER
14 rows selected.
SQL> select ename,regexp_replace(ename,'[[:lower:]]+',initcap(ename)) initcap from emp;
ENAME
--------------------
INITCAP
--------------------------------------------------------------------------------
SMITH
SMITH
ALLEN
ALLEN
WARD
WARD
ENAME
--------------------
INITCAP
--------------------------------------------------------------------------------
JONES
JONES
MARTIN
MARTIN
BLAKE
BLAKE
通过上面两个例子,对于REGEXP_REPLACE函数要注意的两点:
1、如果替换的内容的内容缺省,则表示替换成空(第一个语句中的正则表达式 没有输出)
2、只对匹配的内容做替换(由于enam字段内容全是大写,因此匹配的内容为空)