这主要只是一个“检查我的理解”类型的问题。以下是我对在 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/