【问题标题】:How to replace specific values in a oracle database column?如何替换 oracle 数据库列中的特定值?
【发布时间】:2011-03-27 11:15:03
【问题描述】:

我希望替换特定列中的值。例如以下列值

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

应该是(将est1替换为rest1

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

【问题讨论】:

  • 我查看了搜索结果,发现使用替换从对偶表中获取值的结果。我希望更新表格而不是获取值。

标签: sql oracle replace


【解决方案1】:

使用REPLACE:

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

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

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

【讨论】:

  • 在 Oracle 中,这应该是 UPDATE t,而不是 UPDATE TABLE t。
  • @Tom 大概这里使用了 'TABLE' 作为虚构的表名(而 't' 是别名)。 select 语句还从一个类似命名的虚构表中获取值。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    在Oracle中,有schema name的概念,所以尝试使用这个

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

    【讨论】:

      【解决方案4】:

      我正在使用版本 4.0.2.15 和 Build 15.21

      对我来说,我需要这个:

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

      t.column_name 放在replace 的第一个参数中不起作用。

      【讨论】:

        猜你喜欢
        • 2015-03-28
        • 1970-01-01
        • 1970-01-01
        • 2022-12-31
        • 2021-06-14
        • 2020-02-12
        • 1970-01-01
        • 2021-01-05
        • 1970-01-01
        相关资源
        最近更新 更多