我是正则表达式的新手。我想将(,),[,]之类的任何文本字符串符号替换为连字符(例如):
SELECT REGEXP_REPLACE ('(<FIO>)', '(', '-') FROM dual;
这给了我ORA-12725错误。
拜托,解释一下,怎么了? 感谢。
答案 0 :(得分:3)
要替换符号,请使用TRANSLATE
函数,它比正则表达式函数更少处理器:
SQL> SELECT translate ('(<FIO>)', '()[]', '----') replaced FROM dual;
REPLACED
--------
-<FIO>-
正则表达式更通用,可以做更复杂的事情,但更昂贵。在这种情况下,通过专门的功能更有效地完成将一个字符替换为另一个字符。如果您真的想使用正则表达式,可以使用REGEXP_REPLACE
:
SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 0) reg FROM dual;
REG
---------
--<FIO>--
更新:如果您只想替换第一个符号,则翻译将无效。相反,使用:
SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 1) reg FROM dual;
REG
---------
-(<FIO>)]