【问题标题】:replace a value in clob by a value from another table用另一个表中的值替换 clob 中的值
【发布时间】:2021-12-25 10:37:56
【问题描述】:

我有 2 个表,在表 1 中,我有一个具有错误值的 clob 文件,我需要用另一个表中的正确值替换它。

表1

column1 column2 (clob)
1234 abc...N0001234...
2345 askdfa.. N0002434....

在上面的 table1 N000**** 不正确,现在我有 table2,其中我有正确的值(这不是 clob)

表2

Column1 column2 column3
1234 N0004567 N0001234
2345 N0002435 N0002434

现在我尝试了类似下面的抛出错误

update table1
set column2 = replace (column2, select column3 from table2 where table1.column1 = table2.column1,
                              select column2 from table2 where table1.column1 = table2.column1)

where table1.column1 in (select column1 from table2 where table1.column1 = table2.column1);

但是 oracle 抛出了一个缺少表达式的错误。

有人可以帮帮我吗?

【问题讨论】:

    标签: sql oracle replace


    【解决方案1】:

    您可以使用MERGE 声明:

    MERGE INTO table1 dst
    USING (
      SELECT t1.ROWID AS rid,
             REPLACE(t1.column2, t2.column3, t2.column2) AS replacement
      FROM   table1 t1
             INNER JOIN table2 t2
             ON (t1.column1 = t2.column1 AND t1.column2 LIKE '%'||t2.column3||'%')
    ) src
    ON (src.rid = dst.ROWID)
    WHEN MATCHED THEN
      UPDATE
      SET column2 = src.replacement;
    

    其中,对于样本数据:

    CREATE TABLE table1 (column1, column2) AS
    SELECT 1234, EMPTY_CLOB() || RPAD('abc', 4000,  '.') || 'N0001234' FROM DUAL UNION ALL
    SELECT 2345, TO_CLOB('askdfa.. N0002434....') FROM DUAL;
    

    MERGE之后,表格包含:

    COLUMN1 COLUMN2
    1234 abc.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................N0004567
    2345 askdfa.. N0002435....

    db小提琴here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 2021-06-16
      • 2021-05-03
      • 1970-01-01
      • 2021-10-11
      • 2019-04-10
      • 2019-12-22
      • 1970-01-01
      相关资源
      最近更新 更多