select regexp_replace('aaa_bbb', '(_.)', upper('\1')) 来自 dual
select regexp_replace('aaa_bbb', '(_.)', upper('\1')) from dual
使用 Oracle 11g
select regexp_replace('aaa_bbb', '(_.)', upper('')) from dual;
我要'aaa_Bbb'
.
但是,它 returns 'aaa_bbb'
.
为什么不能替换?
的问题
select regexp_replace('aaa_bbb', '(_.)', upper('')) from dual;
是upper
先于regexp_replace
执行,有效使得:
select regexp_replace('aaa_bbb', '(_.)', '') from dual;
所以你需要一个不同的方法。
查看 oracle regexp replace uppercase replacement string
的答案
如果不必使用 正则表达式 方法,那么 substr + instr + initcap
可能会有所帮助。
SQL> with test (col) as
2 (select 'aaa_bbb' from dual)
3 select substr(col, 1, instr(col, '_')) || initcap(substr(col, instr(col, '_') + 1)) result
4 from test;
RESULT
-------
aaa_Bbb
SQL>
上层更早执行正则表达式
select regexp_replace('aaa_bbb', '(_.)', upper(regexp_substr('aaa_bbb', '(_.)'))) from dual
我认为没有直接的方法可以使用 regexp_replace
进行转换,但可以通过 regexp_substr
以这种方式进行转换:
with t(str) as
(
select 'aaa_bbb' from dual
)
select concat( regexp_substr(str, '.*[_^]'), initcap( regexp_substr(str, '[^_]+$') ) )
as "Formatted String"
from t;
Formatted String
----------------
aaa_Bbb
使用 Oracle 11g
select regexp_replace('aaa_bbb', '(_.)', upper('')) from dual;
我要'aaa_Bbb'
.
但是,它 returns 'aaa_bbb'
.
为什么不能替换?
select regexp_replace('aaa_bbb', '(_.)', upper('')) from dual;
是upper
先于regexp_replace
执行,有效使得:
select regexp_replace('aaa_bbb', '(_.)', '') from dual;
所以你需要一个不同的方法。
查看 oracle regexp replace uppercase replacement string
的答案如果不必使用 正则表达式 方法,那么 substr + instr + initcap
可能会有所帮助。
SQL> with test (col) as
2 (select 'aaa_bbb' from dual)
3 select substr(col, 1, instr(col, '_')) || initcap(substr(col, instr(col, '_') + 1)) result
4 from test;
RESULT
-------
aaa_Bbb
SQL>
上层更早执行正则表达式
select regexp_replace('aaa_bbb', '(_.)', upper(regexp_substr('aaa_bbb', '(_.)'))) from dual
我认为没有直接的方法可以使用 regexp_replace
进行转换,但可以通过 regexp_substr
以这种方式进行转换:
with t(str) as
(
select 'aaa_bbb' from dual
)
select concat( regexp_substr(str, '.*[_^]'), initcap( regexp_substr(str, '[^_]+$') ) )
as "Formatted String"
from t;
Formatted String
----------------
aaa_Bbb