【问题标题】:Oracle 12c - Replace characters in string with nothingOracle 12c - 将字符串中的字符替换为空
【发布时间】: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,所以我没有看到问题。

标签: oracle select oracle12c


【解决方案1】:

这对你有用吗?

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

REG
---
ABC

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

REGE
----
ABC

【讨论】:

    【解决方案2】:

    使用翻译 official doc

    TRANSLATE('abc-''','-''',' ')
    

    【讨论】:

      猜你喜欢
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      相关资源
      最近更新 更多