我试图从 SQL 控制台查看 Oracle BLOB 内部的内容。
我知道它包含相当大的文本正文,并且我只想查看文本,但以下查询仅表明该字段中有一个 BLOB:
select BLOB_FIELD from TABLE_WITH_BLOB where ID = '<row id>';
我得到的结果并不完全符合我的预期:
BLOB_FIELD
-----------------------
oracle.sql.BLOB@1c4ada9
那么我可以使用什么样的魔法将 BLOB 转换成它的文本表示呢?
PS:我只是想从 SQL 控制台(Eclipse Data Tools)查看 BLOB 的内容,而不是在代码中使用它。
首先,您可能希望将文本存储在 CLOB/NCLOB 列中,而不是存储在 BLOB 中,BLOB 是为二进制数据设计的(顺便说一句,您的查询将使用 CLOB)。
以下查询将让您看到 blob 内文本的前 32767 个字符(最多),前提是所有字符集兼容(存储在 BLOB 中的文本的原始 CS、用于 VARCHAR2 的数据库的 CS):
select utl_raw.cast_to_varchar2(dbms_lob.substr(BLOB_FIELD)) from TABLE_WITH_BLOB where ID = '<row id>';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)