如何使用 REPLACE() 交换 SQL* Plus 中的两个字符

How to swap two characters in SQL* Plus , using REPLACE()

我正在尝试使用 REPLACE 函数将 'a' 与 'i' 和 'i' 与 'a' 交换。

示例:

交换前 -> Muradin
交换后 -> Muridan

然而我没有这样做。

我尝试了以下方法:

SELECT REPLACE(REPLACE(name,'a','i'),'i','a')
FROM mytable;

自然不行。因为第一个替换将被提交并且 'a' 将不再存在。

我没有找到任何类似的解决方案,知道我该如何实现吗?

您可以使用TRANSLATE函数:

SELECT TRANSLATE('Muradin', 'ai', 'ia') AS result
FROM dual;

SqlFiddleDemo

或多个REPLACE(警告字符不能出现在像^这样的字符串中):

SELECT REPLACE(REPLACE(REPLACE('Muradin','i','^'),'a','i'),'^','a') AS result
FROM dual;

SqlFiddleDemo2