我有一个表 TABLENAME , COLUMNNAME 数据类型为 CLOB 。例如,它只包含3行第1行行 COLUMNNAME 值 123,456,789 而第2 NULL 和第三是空字符串
我有这个查询
UPDATE TABLENAME
SET COLUMNNAME = COLUMNNAME || CASE
WHEN TRIM(COLUMNNAME) = '' OR COLUMNNAME IS NULL THEN
'098765'
ELSE ',098765'
END
当我运行此查询时,我收到错误消息 ORA-00932:数据类型不一致:预期 - 获得CLOB
如何解决?
我使用的是Oracle数据库10g企业版10.2.0.1.0版 - 64位
答案 0 :(得分:2)
首先,TRIM(COLUMNNAME)=''将始终失败,因为''为NULL并且不会被等于匹配。
尝试使用PL / SQL:
declare
v_clob clob := ',098765';
begin
update t
set val = val || v_clob
where val is not null;
--
UPDATE T
SET val = '098765'
WHERE val is null;
--
end;
/
字符串文字定义为CHAR,当您尝试将其视为CLOB时,它可以很好地转换为VARCHAR2,但是通过不兼容性错误。