如何替换oracle数据库列中的特定值?


69

我正在寻找替换特定列中的值。例如以下列值

column name
----------
Test1
Test2
Test3
Test12

应该是(替换est1rest1

column name
----------
Trest1
Test2
Test3
Trest12

我查看了搜索结果,找到了使用replace从对偶表中获取值的结果。我正在寻找更新表,而不是获取值。
schar 2010年

Answers:


189

使用REPLACE

SELECT REPLACE(t.column, 'est1', 'rest1')
  FROM MY_TABLE t

如果要更新表中的值,请使用:

UPDATE MY_TABLE t
   SET column = REPLACE(t.column, 'est1', 'rest1')

14
在Oracle中,它应该是UPDATE t,而不是UPDATE TABLE t。
汤姆·肖

7
@Tom此处假定'TABLE'用作虚拟表名(而't'是别名)。select语句还从类似名称的虚构表中获取值。
nbrooks,2017年

21

如果您需要更新特定表中的值:

UPDATE TABLE-NAME SET COLUMN-NAME = REPLACE(TABLE-NAME.COLUMN-NAME, 'STRING-TO-REPLACE', 'REPLACEMENT-STRING');

哪里

  TABLE-NAME         - The name of the table being updated
  COLUMN-NAME        - The name of the column being updated
  STRING-TO-REPLACE  - The value to replace
  REPLACEMENT-STRING - The replacement

0

在Oracle中,存在模式名称的概念,因此请尝试使用此名称

update schemname.tablename t
set t.columnname = replace(t.columnname, t.oldvalue, t.newvalue);

-4

我正在版本4.0.2.15和内部版本15.21中使用

对我来说,我需要这个:

UPDATE table_name SET column_name = REPLACE(column_name,"search str","replace str");

t.column_name中的第一个参数replace没有工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.