oracle sql中的COALESCE行为不符合预期

时间:2019-05-05 11:07:28

标签: sql oracle coalesce

我最近有一个问题,关于如何用表C的列D中的值(分别对应于id)更新表A的列B。

UPDATE Table2 t2
    SET D_N = COALESCE( (SELECT t1.D_N FROM Table1 t1 WHERE t1.D_ID 
= t2.D_ID), 0);

该代码有效,现在我尝试执行相同的操作,只是没有对VARCHAR/VARCHAR2字段进行比较,而是对NUMBER进行了比较。我要引用的字段是D_ID。该代码适用于VARCHAR2/VARCHAR字段,现在为NUMBER

我认为这很容易解决,因此我为每个表创建了一个temp列,并使用to_char方法填充了值,并且我的架构按预期显示了数据类型为{{1 }}用于表1和表2列VARCHAR2

尽管如此,我仍然收到错误D_ID

有关表的DDL:

ORA-00932: inconsistent datatypes: expected CHAR got NUMBER

谢谢。

1 个答案:

答案 0 :(得分:0)

看起来好像是COALESCE末尾的0,

UPDATE Table2 t2
    SET D_N = COALESCE( (SELECT t1.D_N FROM Table1 t1 WHERE t1.D_ID 
= t2.D_ID), 0);

更改为

UPDATE Table2 t2
    SET D_N = COALESCE( (SELECT t1.D_N FROM Table1 t1 WHERE t1.D_ID 
= t2.D_ID), '-');

是我帮忙的。