1. ホーム
  2. sql

[解決済み] Oracle SQLでBLOBからテキストコンテンツを取得する方法

2022-08-07 06:10:03

質問

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のコンテンツを見ようとしているだけで、コードで使おうとしているわけではありません。

どのように解決するのですか?

まず第一に、バイナリデータ用に設計されたBLOBではなく、CLOB/NCLOBカラムにテキストを格納したい場合があります(ちなみに、あなたのクエリは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>';