首先,这不是this问题的重复。如果是,抱歉,但我无法通过阅读来解决我的问题。
我收到了这个错误:
ORA-00932: inconsistent datatypes: expected - got CLOB
当我尝试执行此SELECT语句时:
SELECT TXT.t_txt
FROM CITADM.tb_avu_txt_grc GR
INNER JOIN CITADM.tb_avu_txt TXT
ON (GR.e_txt = TXT.e_txt and GR.u_txt = TXT.u_txt)
WHERE TXT.u_lin_ord = 1
UNION
SELECT TXT.t_txt
FROM CITADM.tb_avu_txt_grc_cvd GRC
INNER JOIN CITADM.tb_avu_txt TXT
ON (GRC.e_txt = TXT.e_txt and GRC.u_txt = TXT.u_txt)
WHERE TXT.u_lin_ord = 2
所选字段(t_txt)是CLOB数据类型。如您所见,它与同一个表的列相同。这个陈述属于一个更大的陈述,我已经把我遇到这个问题的部分隔离了。
非常感谢。
答案 0 :(得分:44)
我认为问题在于使用UNION
代替UNION ALL
。 UNION
运算符将两个组合并消除重复。由于无法比较CLOB类型,因此不能使用重复消除部分。
使用UNION ALL
不会尝试重复删除(反正你可能没有重复),所以它应该可以工作。
答案 1 :(得分:0)
由于我有重复,我无法使用UNION ALL。这个解决方案很完美,谢谢!
顺便说一句: 这是唯一正确的答案,因为UNION ALL和UNION在语义上是不同的。如果根本没有重复项,则使用UNION会产生不必要的排序开销。