我最近有一个问题,关于如何用表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
谢谢。
答案 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), '-');
是我帮忙的。