我正在从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
}
更新二:
数据库中还有一个名为“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;
2条答案
按热度按时间monwx1rj1#
这对我很有效:
eagi6jfj2#
这对我们来说是有效的,我们通过Java zip compress压缩了XML负载,并存储在名为payload的BLOB列中: