帮助我理解Oracle中CLOB和BLOB之间的区别

时间:2009-06-19 13:51:38

标签: python oracle

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

  • CLOB用于XML,JSON等文本。您不应该假设数据库将其存储为什么编码(至少在应用程序中),因为它将转换为数据库配置使用的任何编码。
  • BLOB用于二进制数据。您可以合理地确保它们将被存储在您发送它们的方式中,并且您将使用与它们发送时完全相同的数据来获取它们。

换句话说,我说有一些二进制数据(在这种情况下是一个pickle python对象)。我需要确定的是,当我发送它时,它将完全按照我发送的方式存储,当我收回它时它将完全相同。 BLOB就是我想要的,对吗?

为此使用CLOB真的可行吗?或者字符编码会导致足够的问题而不值得吗?

2 个答案:

答案 0 :(得分:54)

CLOB对编码和排序规则敏感,BLOB不是。

当你使用CLOB写一个CL8WIN1251时,你会写一个0xC0(这是西里尔字母А)。

当您使用AL16UTF16阅读数据时,您会收到0x0410,这是此信的UTF16代表。

如果您正在使用BLOB阅读,那么您将获得相同的0xC0

答案 1 :(得分:10)

您的理解是正确的。由于你提到了Python,想想字符串和字节之间的Python 3区别:CLOB和BLOB非常类似,另外一个问题是CLOB的编码不在你应用程序的控制之下。

相关问题