【发布时间】:2018-12-04 12:44:45
【问题描述】:
我试图用空格和撇号替换定义为 VARCHAR2(6) 的列中的任何内容,但是我的方法是用最多 6 个字符的空格替换它们。
示例"ABC-" 和"ABC'" 需要分别转换为"ABC " 和"ABC"。
我正在使用以下内容:
select UPPER(RPAD(REPLACE(REPLACE(NVL('ABC-',' '),'-',' '),'''',''), 6,' '))
from dual
这是返回"ABC ",但应该返回"ABC "
select UPPER(RPAD(REPLACE(REPLACE(NVL('ABC''',' '),'-',' '),'''',''), 6,' '))
from dual
这是返回"ABC ",但应该返回"ABC"
【问题讨论】:
-
你认为
rpad(,,,, 6, ' ')在做什么? -
@AlexPoole 当我从中删除空间时,由于某种原因,结果仍然相同。
-
反正默认是空格。
-
If you do not specify expr2, then it defaults to a single blank.。你告诉它填充值,所以我不知道你为什么对它这样做感到惊讶。
-
rpad('ABC',6)与rpad('ABC',6,' ')相同,因为' '是默认填充字符。无论哪种方式,它都会填充到您得到的长度 6,所以我没有看到问题。