oracle CLOB/BLOB to varchar2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle CLOB/BLOB to varchar2相关的知识,希望对你有一定的参考价值。

TABLE_NAME table_a
COLUMN_NAME column_a
DATA_TYPE BOLB or CLOB
问题如题
不是要显示的类型,是要改变字段(column_a)的类型(CLOB/BLOB to varchar2),请根据上面给的表名和字段写个SQL语句来看看,谢谢!
我的做法是这样的,适用于表里没数据。有没有更好的方法,求解!
ALTER TABLE table_a drop column column_a ;
alter table table_a add (column_a varchar2(500));

to_char就好了,long型的不能to_char,需要用其他方式,但是clob直接to_char就搞定了追问

BLOB类型的呢?

追答

空表就删了再建,有个关键字modify,但是不能针对blob字段;
blob存的是二进制的,不能转换为varchar,你试想一个图片你怎么转换为字符?

追问

(是数据库组人的让把大对象都转换成varchar2)!!
我想在问下若不是空表,用modify转换类型可以吗?还有modify能转换大对象类型吗?我试过,不好使啊,是我用法不对吗?求解!
我用的sql:ALTER TABLE table_a MODIFY column_a varchar2(500);

追答

当然不可以,不是空表的话,不能做任何字段类型变更,这跟大字段没有关系。修改一列的字段类型的前提就是这个字段的值全部为空。

追问

表现在是空的,执行sql:ALTER TABLE table_a MODIFY column_a varchar2(500);
对大对象类型也不行啊。

参考技术A to_char

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

【中文标题】帮我理解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 to varchar2的主要内容,如果未能解决你的问题,请参考以下文章

Sqoop处理Clob与Blob字段

oracle怎么导出含有Clob大数据字段类型的表

oracle中blob,clob,nclob主要区别是啥?

Oracle中的BLOB和CLOB字段类型的区别

Oracle中Blob和Clob

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