避免使用嵌套的regexp_replace()来更改字符串中的多个char

时间:2017-11-03 11:48:01

标签: sql oracle11g

我想使用Oracle 11g的简单查询替换字符串中的多个char。现在我用:

select regexp_replace(regexp_replace(regexp_replace(colName, 'a', 'x'), 'b', 'y' ) 'c', 'z') from myTable;

但我对此并不满意。什么是具有相同输出的更直观的查询?

2 个答案:

答案 0 :(得分:1)

translate()在第一个参数中搜索第二个参数中字符的字符串,并将它们替换为第三个参数中与第二个参数中位于相同位置的字符:

SQL> select translate('abc', 'abc', 'xyz')
     from dual;

TRA
---
xyz

SQL> select translate('tralalajustbecause','abc','xyz') from dual;

TRA
---
trxlxlxjustyezxuse 

答案 1 :(得分:1)

translate函数将完成您想要的操作:

select translate(colName, 'abc', 'xyz') from myTable;