如何比较长数据类型与 CLOB

问题描述 投票:0回答:1

我想比较 oracle 中的 TEXT(LONG) FROM USER_VIEWS 表与用户创建的表 ALL_VIEWS_BACKUP 中的文本(CLOB)。

类似的东西:

CREATE TABLE ALL_VIEWS_BACKUP AS SELECT VIEW_NAME,TEXT_LENGTH,TO_LOB(TEXT) AS text FROM USER_VIEWS;

SELECT dbms_lob.compare(to_lob(avt.TEXT),avb.TEXT) FROM ALL_VIEWS_BACKUP avb,USER_VIEWS avt WHERE avb.VIEW_NAME = avt.VIEW_NAME;

表创建成功。

文本差异结果应为1,相同结果应为0, 但在查询中我得到了错误 - ORA-00932:不一致的数据类型:预期 - 很长。

帮我解决这个问题

谢谢

sql oracle long-integer clob ora-00932
1个回答
0
投票

您看到的错误是因为 DBMS_LOB.COMPARE 函数不支持比较 LONG 数据类型和 CLOB 数据类型。

这个问题的一个解决方案是使用 TO_LOB 函数将 LONG 数据类型转换为 CLOB 数据类型。这是您查询的更新版本:

SELECT DBMS_LOB.COMPARE(TO_LOB(avt.TEXT), avb.TEXT)
FROM ALL_VIEWS_BACKUP avb, USER_VIEWS avt
WHERE avb.VIEW_NAME = avt.VIEW_NAME;

通过使用 TO_LOB 函数将 LONG 数据类型转换为 CLOB 数据类型,您现在可以使用 DBMS_LOB.COMPARE 函数比较两个文本字段。

© www.soinside.com 2019 - 2024. All rights reserved.