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

Sql 避免使用嵌套的regexp_replace()来更改字符串中的多个字符,sql,oracle11g,Sql,Oracle11g,我想使用Oracle11g的简单查询替换字符串中的多个字符。现在我使用: select regexp_replace(regexp_replace(regexp_replace(colName, 'a', 'x'), 'b', 'y' ) 'c', 'z') from myTable; 但我对它不是很满意。哪种查询更直观且具有相同的输出?translate()在第一个参数中的字符串中搜索第二个参数中的字符,并将其替换为第三个参数中与第二个参数中的字符位置相同的字符: SQL> selec

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

select regexp_replace(regexp_replace(regexp_replace(colName, 'a', 'x'), 'b', 'y' ) 'c', 'z') from myTable;
但我对它不是很满意。哪种查询更直观且具有相同的输出?

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

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

TRA
---
xyz

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

TRA
---
trxlxlxjustyezxuse 

translate功能将实现您想要的功能:

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

你不需要
regexp\u replace
来做这件事,我认为一个普通的替换应该可以工作,我也没有看到一个更好的交换字母的方法。如果替换的字符集和替换集没有共同的字符,你可以使用翻译,你的字符就像
a,b,c
等,或者你真的有一些正则表达式需要替换吗?@KaushikNayak简单字符(1个字母)那么,我认为正常的
替换
翻译
应该足够了,就像其他评论中提到的那样。这不如嵌套的regexp_replace()灵活。我正在寻找这样的东西:myTranslate('abc','Tralalajustbest','xyz');输出:trxlxjustyezxusewell我遵循了您最初的示例。你应该包括这个示例文本,我当时不会发布这个。sighOk@Caius Jard,你说服我取消删除它。让我们看看会发生什么,如果有的话。:-)你看不到的是,在一个被删除的答案中,这一点以前就有人提出过。奇怪的是,OP抱怨它没有做他想做的事,回答者删除了他们的建议,但OP举了一个例子,说明它本来可以做他想做的事。。因此,我认为翻译是正确的建议。他现在也可能已经解决了他的困惑:)哦,很有趣-是的,我在评论中看到了讨论,但认为一个可执行的例子可能会有所帮助。