如何将数据类型CLOB转换为VARCHAR2(SQL)

12

表格:customers

ID      NAME             DATATYPE
NUMBER  VARCHAR2(100)    CLOB

我希望将DATA列从CLOB类型更改为`VARCHAR2(1000)`。

我已经尝试使用 ALTER TABLE customers MODIFY DATA VARCHAR2 (1000),也尝试了ALTER TABLE customers MODIFY (DATA VARCHAR2 (1000))

同样没有成功。

alter table customers  modify
(data VARCHAR2(4000))

这些通常适用于非 CLOB 数据类型,但我收到了 ORA-22859 的错误提示,因为我正在使用 Oracle Toad/Apex。

1个回答

26

您可以尝试以下方法:

  1. 添加一个新的varchar2列

    alter table my_table add (new_column varchar2(1000));

  2. 将CLOB名称更新为varchar2列

    update my_table set new_column=dbms_lob.substr(old_column,1000,1);

在测试数据后,执行以下步骤:

  1. 删除CLOB列

    alter table my_table drop column old_column

  2. 将varchar2列重命名为CLOB列名

    alter table my_table rename column new_column to old_column


哈哈,我也是这么想的,但我不知道怎么做。应该有方法可以更改 clob 数据类型。 - PHPnoob
他们应该有一种方法可以更改CLOB数据类型。这是什么意思? - Rahul Tripathi
这意味着将CLOB更改为VARCHAR2或NUMBER,就像您可以将VARCHAR2(100)更改为VARCHAR2(1000)或VARCHAR2更改为NUMBER一样。 - PHPnoob
1
你想让我在尝试将现有列的数据类型从 CLOB 更改为 VARCHAR2 的同时“添加”一个新列。 - PHPnoob
@PHPnoob:我明白,但那是最简单的方法。请查看此相关主题:http://dba.stackexchange.com/questions/5948/how-to-replace-a-clob-column-by-a-varchar24000-column - Rahul Tripathi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接