我正在使用Oracle并且有一个包含长数据类型的表。自那以后,我发现这是遗留的,我应该使用LOB。我现在也想我可以使用NUMBER(10,0)。将LONG数据类型列分配到NUMBER数据类型列
我想将列从长数据类型转换为NUMBER数据类型。
这是我的SQL到目前为止。
ALTER TABLE BUDGET ADD AMT2 NUMBER(10,0);
UPDATE BUDGET SET AMT2 = AMT;
ALTER TABLE BUDGET DROP COLUMN AMT;
ALTER TABLE BUDGET RENAME COLUMN AMT2 TO AMT;
的AMT列是LONG 新AMT2列是我的电话号码的新列(10,0)
的问题是分配给长了一些,当我得到一个错误。这是在更新行(第2行)这我认为是由于数据截断。
的错误是
SQL Error: ORA-00932: inconsistent datatypes: expected NUMBER got LONG
中的所有列的数据小于10000,所以我想迫使甲骨文忽略任何数据截断(因为我不认为应该有任何)。我如何将长数据分配给数字数据列?
谢谢
Oracle中的'LONG'数据类型用于存储大量文本数据。所以把它转换成“NUMBER”似乎很奇怪。你是否说过,不仅所有数据都是4个字节或更少,并且存储在“LONG”列中的字符都只是数字?此外,你声明你得到一个错误,但你不告诉我们是什么错误。 –
谢谢贾斯汀。我添加了错误。有趣的长。我认为这是一个数字在java中很长。此列仅包含数字 – RNJ
['LONG'数据类型文档](http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements001.htm#sthref136)以供参考。 –