Oracle如何解压缩Blob

时间:2014-06-18 05:17:28

标签: sql oracle oracle11g blob type-conversion

我正在从Oracle表中提取BLOB列。

我得到的一些blob值是正确的字符串字符。

但是某些blob值没有显示正确的字符串。这些行似乎是“压缩”

Table Name: TableA
Column Name: ID,                Type: Number
Column Name: BLOB_BINARY_VALUE, Type: BLOB
Column Name: BLOB_COMPRESSED,   Type: Number

这是我使用的SQL:

Select BLOB_BINARY_VALUE FROM TableA WHERE ID =  1234567;

我也尝试过使用:

Select TO_BLOB(BLOB_BIN_VALUE) FROM TableA WHERE ID =  1234567;

我得到错误的Blob值的示例:(由于它的长度,我修剪了下面的值)

 öp‘CÇL.aÜÌIëÉ8gbȨ!ƒ™2fÌÀÌ…mc›cÆÌ:0óÆ
:bØ>n€7iض1M9sÊТÉSДaÃ6gvôéÓ@;iÊÜY“Æ

我猜这个BLOB是压缩格式的。 我怎样才能解压缩这种BLOB?

非常感谢你。

更新1: 正确的Blob查询示例,我也期待其他人:

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg;}}
\viewkind4\uc1\pard\f0\fs20 MESSAGE HERE MESSAGE HERE MESSAGE HERE.   \par
}

更新2:

数据库中还有另一列名为“BLOB_COMPRESSED”。具有“0”的行是显示正确值的行。具有“1”的行是显示错误值的行。所以我猜测数据是压缩的。

更新3: 我试图按照此链接的建议,但仍然像压缩字符串:How do I get textual contents from BLOB in Oracle SQL

Select utl_raw.cast_to_varchar2(dbms_lob.substr(BLOB_BIN_VALUE)) 
FROM TableA 
WHERE ID = 1234567;

1 个答案:

答案 0 :(得分:0)

这对我有用:-

id | field_id | document_id | content 
1  | 1        | 1           | Lorem ipsum
2  | 2        | 1           | Another ipsum
3  | 1        | 2           | Another unique content
4  | 2        | 2           | Yet another unique content