Oracle 12c-将字符串中的字符替换为零

Oracle 12c-将字符串中的字符替换为零,oracle,select,oracle12c,Oracle,Select,Oracle12c,我试图用空格替换破折号,用定义为VARCHAR2(6)的列中的空白替换撇号,但是我的方法是用最多6个字符的空格替换它们 示例“ABC-”和“ABC”需要分别转换为“ABC”和“ABC” 我正在使用以下工具: select UPPER(RPAD(REPLACE(REPLACE(NVL('ABC-',' '),'-',' '),'''',''), 6,' ')) from dual 这将返回“ABC”,但应返回“ABC” 这是返回的“ABC”,但是应该返回“ABC”这对你有用吗 SQL>

我试图用空格替换破折号,用定义为VARCHAR2(6)的列中的空白替换撇号,但是我的方法是用最多6个字符的空格替换它们

示例
“ABC-”
“ABC”
需要分别转换为
“ABC”
“ABC”

我正在使用以下工具:

select UPPER(RPAD(REPLACE(REPLACE(NVL('ABC-',' '),'-',' '),'''',''), 6,' '))
from dual
这将返回
“ABC”
,但应返回
“ABC”


这是返回的
“ABC”
,但是应该返回
“ABC”

这对你有用吗

SQL>  select regexp_replace('ABC''','''','') from dual;

REG
---
ABC

SQL> select regexp_replace('ABC-','-',' ') from dual;

REGE
----
ABC

使用翻译


你认为
rpad(,,,,6,,,,,)
在做什么?@AlexPoole当我从中删除空格时,出于某种原因,结果仍然是一样的。默认值还是一个空格。。你告诉它填充值,所以我不知道为什么你会对它这样做感到惊讶。
rpad('ABC',6)
rpad('ABC',6',')
是一样的,因为
'
是默认的填充字符。无论哪种方式,它都会增加到长度6,这就是你得到的,所以我看不出问题所在。
SQL>  select regexp_replace('ABC''','''','') from dual;

REG
---
ABC

SQL> select regexp_replace('ABC-','-',' ') from dual;

REGE
----
ABC
TRANSLATE('abc-''','-''',' ')