Oracle 数据库中long,lob类型的区别及转换

?字符类:

LONG:可变长的字符串数据,最长2G,LONG具有V ARCHAR2列的特性,可以存储长文本,一个表中最多一个LONG列

?二进制类:

LONG RAW:可变长二进制数据,最长2G

?大对象类:

CLOB:用来存储单字节的字符数据

NCLOB:用来存储多字节的字符数据

BLOB:用于存储二进制数据

BFILE:存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。

CLOB,NCLOB,BLOB都是内部的LOB类型,最长4G,没有LONG只能有一列的限制,对于保存图片、文本文件、Word文件,用BLOB最好,LONG RAW也不错,但Long是oracle将要废弃的类型,因此建议用LOB。

对于包含long数据类型的表t1,不能用“create table t2 as select * from t1;”的方式予以复制,会报“非法使用long类型”的错误:

SQL>create table t1(myid number, mylong long);

SQL(c3prd)>create table t2 as select * from t1;

create table t2 as select * from t1

*

ERROR at line 1:

ORA-00997: illegal use of LONG datatype

解决的方法有:

1)将long类型先转换成clob类型,再用上述方法复制

SQL(c3prd)>create table t2 as select myid,to_lob(mylong) mylob from t1;

Table created.

SQL(c3prd)>desc t2

Name Null? Type

----------------------------------------------------- -------- ------------------------------------

MYID NUMBER

MYLOB CLOB

SQL(c3prd)>create table t3 as select * from t2;

Table created.

SQL(c3prd)>desc t3

Name Null? Type

----------------------------------------------------- -------- ------------------------------------

MYID NUMBER

MYLOB CLOB

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐