【问题标题】:Replace a part of a varchar2 column in Oracle替换 Oracle 中 varchar2 列的一部分
【发布时间】:2013-08-23 12:48:01
【问题描述】:

我在一个表中有一个 varchar2 列,其中包含一些条目,如下所示 TEMPORARY-2 TIME ECS BOUND -04-余额不足 我想更新这些条目并使其成为 TEMPORARY-2 X。出路是什么?

【问题讨论】:

    标签: regex oracle replace oracle-sqldeveloper varchar2


    【解决方案1】:

    为此,您可以使用字符函数,例如substr()replace()

    或正则表达式函数 - 例如regexp_replace()

    SQL> with t1(col) as(
      2    select 'TEMPORARY-2 TIME ECS BOUND -04-Insuficient Balance'
      3      from dual
      4  )
      5  select concat(substr( col, 1, 11), ' X')             as res_1
      6       , regexp_replace(col, '^(\w+-\d+)(.*)', '\1 X') as res_2
      7  from t1
      8  ;
    

    结果:

    RES_1         RES_2
    ------------- -------------
    TEMPORARY-2 X TEMPORARY-2 X
    

    所以您的update 语句可能如下所示:

    update your_table t
       set t.col_name = regexp_replace(col_name, '^(\w+-\d+)(.*)', '\1 X')
     -- where clause if needed.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 2014-08-28
      相关资源
      最近更新 更多