替换Oracle中varchar2列的一部分

时间:2013-08-21 08:30:09

标签: regex oracle replace oracle-sqldeveloper varchar2

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

1 个答案:

答案 0 :(得分: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.