【发布时间】:2012-08-24 04:38:37
【问题描述】:
我正在使用 Oracle 并且有一个包含 long 数据类型的表。从那以后我发现这是遗留问题,我应该使用 LOB。我现在也认为我可能只使用 NUMBER(10,0)。
我想将列从 long 数据类型转换为 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 列很长 新的 AMT2 列是我的新列 NUMBER(10, 0)
问题是在将 long 分配给数字时出现错误。这是在更新行 (line2) 我认为这是因为数据截断。
错误是
SQL Error: ORA-00932: inconsistent datatypes: expected NUMBER got LONG
列中的所有数据都小于 10000,所以我想强制 oracle 忽略任何数据截断(因为我不认为应该有任何数据截断)。如何将长数据分配给数字数据列?
谢谢
【问题讨论】:
-
Oracle 中的
LONG数据类型用于存储大量文本数据。所以将其转换为NUMBER似乎很奇怪。您是说不仅所有数据都是 4 个字节或更少,而且存储在LONG列中的字符都只是数字吗?此外,您声明您收到了一个错误,但您没有告诉我们这是什么错误。 -
感谢贾斯汀。我已经添加了错误。对龙很感兴趣。我认为它就像 java 中的 long 一样,它是一个数字。此列仅包含数字
标签: sql oracle type-conversion