sql - Oracle 数据库 : How to read a BLOB?

标签 sql oracle blob

我正在使用 Oracle 数据库,我想读取 BLOB 的内容。我该怎么做?

当我执行一个简单的 select 语句时,它只返回“(BLOB)”(不带引号)。我如何阅读实际内容?

最佳答案

您可以使用 UTL_RAW.CAST_TO_RAW(UTL_RAW.CAST_TO_VARCHAR2()) 转储十六进制值.

SELECT b FROM foo;
-- (BLOB)

SELECT UTL_RAW.CAST_TO_RAW(UTL_RAW.CAST_TO_VARCHAR2(b))
FROM foo;
-- 1F8B080087CDC1520003F348CDC9C9D75128CF2FCA49D1E30200D7BBCDFC0E000000

这很方便,因为这与用于插入 BLOB 列的格式相同:
CREATE GLOBAL TEMPORARY TABLE foo (
    b BLOB);
INSERT INTO foo VALUES ('1f8b080087cdc1520003f348cdc9c9d75128cf2fca49d1e30200d7bbcdfc0e000000');

DESC foo;
-- Name Null Type 
-- ---- ---- ---- 
-- B        BLOB 

然而,在某个点(2000 字节?)对应的十六进制字符串超过了 Oracle 的最大字符串长度。如果你需要处理这种情况,你必须结合 How do I get textual contents from BLOB in Oracle SQLdocumentation for DMBS_LOB.SUBSTR 对于更复杂的方法,您可以查看 BLOB 的子字符串。

关于sql - Oracle 数据库 : How to read a BLOB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682387/

相关文章:

mysql group by 删除一些列后

mysql - 根据其他行的条件选择行

oracle - 如何在 PL/SQL 对象类型中链接成员函数

c++ - 如何用 C++ 从 MySQL 获取 Blob 数据

javascript - 如何将 getUsermedia 音频流转换为 blob 或缓冲区?

mysql - 添加第三个 LEFT JOIN 时查询速度很慢

sql - 在本地 SQL 服务器和 Azure SQL 服务器之间创建源?

database - 如何远程导出oracle数据库?

oracle - 使用 JDBC 连接 Oracle 数据库的 URL 字符串格式

database - 使用 Bash 将大图像作为 BLOB 存储在 SQLite 数据库中