帮我理解Oracle中CLOB和BLOB的区别
Posted
技术标签:
【中文标题】帮我理解Oracle中CLOB和BLOB的区别【英文标题】:Help me understand the difference between CLOBs and BLOBs in Oracle 【发布时间】:2010-11-04 07:43:00 【问题描述】:这主要只是一个“检查我的理解”类型的问题。以下是我对 CLOB 和 BLOB 在 Oracle 中工作的理解:
CLOB 用于 XML、JSON 等文本。您不应假设数据库会将其存储为何种编码(至少在应用程序中),因为它将转换为数据库配置使用的任何编码。李> BLOB 用于二进制数据。您可以放心,它们将以您发送它们的方式存储,并且您将使用与它们发送时完全相同的数据取回它们。换句话说,假设我有一些二进制数据(在本例中是一个腌制的 Python 对象)。我需要保证,当我发送它时,它将完全按照我发送它的方式存储,并且当我取回它时它会完全一样。 BLOB 是我想要的,对吗?
为此使用 CLOB 真的可行吗?还是字符编码会引起足够多的不值得的问题?
【问题讨论】:
除非您正在开发第三方实用程序,否则您不应尝试猜测数据库将如何存储其中任何一个。应该只信任尺寸指南。 【参考方案1】:CLOB
对编码和排序规则敏感,BLOB
不是。
当您使用CL8WIN1251
写入CLOB
时,您会写入0xC0
(这是西里尔字母А)。
当您使用AL16UTF16
读回数据时,您会返回0x0410
,这是这封信的UTF16
表示。
如果您正在阅读 BLOB
,您将得到相同的 0xC0
回复。
【讨论】:
【参考方案2】:你的理解是正确的。既然您提到了 Python,请考虑一下 Python 3 中字符串和字节之间的区别:CLOB 和 BLOB 非常相似,还有一个额外的问题是 CLOB 的编码不受您的应用程序的控制。
【讨论】:
以上是关于帮我理解Oracle中CLOB和BLOB的区别的主要内容,如果未能解决你的问题,请参考以下文章