2010-08-09 150 views
51

我正在寻找替换特定列中的值。例如,下面列的值如何替换oracle数据库列中的特定值?

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

应(与rest1更换est1

column name 
---------- 
Trest1 
Test2 
Test3 
Trest12 
+0

我看了一下搜索结果,发现那些使用替代从双表中获取的值。我期待更新表格而不是获取值。 – schar 2010-08-09 18:47:58

回答

136

使用REPLACE

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

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

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

在Oracle中,这应该是UPDATE t,而不是UPDATE TABLE t。 – 2016-03-30 08:53:01

+1

@Tom据推测,'TABLE'在这里用作虚构的表名(而't'是别名)。 select语句也从类似命名的虚构表中获取值。 – nbrooks 2017-03-31 17:15:06

16

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

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 
-2

我使用的版本4.0.2.15使用Build 15.21

对我来说,我需要这个:

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

t.column_name置于fi replace的第一个参数不起作用。

-1

在Oracle中,有架构名称的概念,所以请尝试使用此

update schemname.tablename t 
set t.columnname = replace(t.columnname, t.oldvalue, t.newvalue); 
相关问题