Oracle中,如果一个列的类型为varchar2,那么它不能直接转换为clob类型。可以通过间接的方式来修改。下面为实验:

SQL>create table test(id int,name varchar2(10));

Tablecreated

SQL>insert into test values(1,'a');

1row inserted

SQL>insert into test values(2,'b');

1row inserted

SQL>commit;

Commitcomplete

SQL>select * from test;

ID  NAME

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

1      a

2      b

SQL> desc test

NameType        Nullable Default Comments

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

ID  INTEGER    Y

NAMEVARCHAR2(10) Y

SQL> alter table test modify(name clob);

altertable test modify (name clob)

ORA-22858: 数据类型的变更无效

如果直接转换,报错!

我们可以通过间接的方式来操作:

新建一个clob类型的列,将原列的值插入新建的列,然后删除原列,重命名新列。

SQL> alter table test add name1clob;

Table altered

SQL> update test setname1=name;

2rows updated

SQL> select * from test;

IDNAME      NAME1

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

1 a          a

2 b          b

SQL> desc test

Name  Type        Nullable Default Comments

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

ID    INTEGER    Y

NAME  VARCHAR2(10) Y

NAME1CLOB        Y

SQL> commit;

Commit complete

SQL> alter table test dropcolumn name;

Table altered

SQL> alter table test renamecolumn name1 to name;

Table altered

SQL> select * from test;

ID NAME

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

1 a

2 b

SQL> desc test

NameType    Nullable Default Comments

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

ID  INTEGER Y

NAMECLOB    Y

相关阅读:

0b1331709591d260c1c78e86d0c51c18.png

Logo

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

更多推荐