问题场景

select blob from table1 
union 
select blob from table2

出错:ora-00932:数据类型不一致:应为 -,但却获得BLOB

解决思路

因为我关联的时候,有的数据可以对应上上Clob 字段,有的则为空,但我又想把这些数据都显示出来,一直想的是怎么把字符串转成CLOB 类型,查找了半天,也没有发现一个好办法,好像大家都不经常用转成CLOB类型函数。

TO_CLOB()
在这里插入图片描述

UPDATE PRINT_MEDIA 
   SET AD_FINALTEXT = TO_CLOB (AD_FLTEXTN); 

解决办法

因为:union会对字段类型进行比较(相等和不等判断),oracle不支持对大数据类型的比较操作。 解决办法:使用union all就可以了。union all不涉及比较。

select blob from table1 
union all
select blob from table2

拓展

CLOB 字段不能用的情况

不支持的语句 不支持的用法例子
SELECT DISTINCT

SELECT DISTINCT clobCol from...

SELECT clause           

ORDER BY

SELECT... ORDER BY clobCol

SELECT clause           

GROUP BY

SELECT avg(num) FROM...

GROUP BY clobCol

UNION, INTERSECT, MINUS           

(Note that UNION ALL works for LOBs.)

SELECT clobCol1 from tab1 UNION SELECT clobCol2 from tab2;

Join queries

SELECT... FROM... WHERE tab1.clobCol = tab2.clobCol

Index columns

CREATE INDEX clobIndx ON tab(clobCol)...

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐