python - 帮我理解Oracle中CLOB和BLOB的区别

标签 python oracle

这主要只是一个“检查我的理解”类型的问题。以下是我对在 Oracle 中工作的 CLOB 和 BLOB 的理解:

  • CLOB 用于 XML、JSON 等文本。您不应假设数据库会将其存储为何种编码(至少在应用程序中),因为它将转换为数据库配置使用的任何编码。<
  • BLOB 用于二进制数据。您可以放心,它们会以您发送它们的方式存储,并且您会以与它们发送时完全相同的数据取回它们。

换句话说,假设我有一些二进制数据(在本例中是一个腌制的 Python 对象)。我需要保证,当我发送它时,它将完全按照我发送它的方式存储,并且当我取回它时它会完全一样。 BLOB 是我想要的,对吗?

为此使用 CLOB 真的可行吗?还是字符编码会引起足够多的不值得的问题?

最佳答案

CLOB 是编码和排序敏感的,BLOB 不是。

当您使用 CL8WIN1251 写入 CLOB 时,您会写入 0xC0(西里尔字母 А)。

当你使用 AL16UTF16 读回数据时,你会得到 0x0410,这是这个字母的 UTF16 表示。

如果您从 BLOB 中读取,您会得到相同的 0xC0

关于python - 帮我理解Oracle中CLOB和BLOB的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018073/

相关文章:

java - 如何使用 SQL 浏览图像并将其保存到 Oracle DB 中?

oracle - 为什么此查询不使用 NLSSORT 索引?

c# - Oracle 对过度索引表的更新语句

Python 留下 10% 具有最大权重的分支 NetworkX 图

python - 反转漂亮的日期格式

python - 如何在 Django 中使用具有相同属性的另一个模型创建对象

java - 使用 TLS 证书的 JDBC 连接到 Oracle 数据库

python - 用单行列表字符串有效地替换多行列表字符串

python - 如何在pandas中按正数或负数对数据进行分组

oracle - Oracle 存储过程中错误代码的返回消息