直到今天我们使用在Varchar列中输入数值,以便Oracle将该varchar字段转换为数字字段。 现在,当我们尝试插入字符值时,它会抛出ORA-01722(无效数字)。
有人可以帮助我将其转换回varchar字段吗?
答案 0 :(得分:0)
评论者是正确的:数据库本身不会更改列类型。通常,您必须创建一个新列,将旧数据复制到新列,删除原始列,然后重命名新列。
drop table deleteme_table;
-- zippy s/b varchar2(30), not integer
CREATE TABLE deleteme_table
(
adate DATE
, zippy INTEGER
);
-- Add the correct type to the table as a new column
ALTER TABLE deleteme_table
ADD (tempcol VARCHAR2 (30));
-- Copy the old values to the new column
UPDATE deleteme_table
SET tempcol = zippy;
-- Get rid of the original column
ALTER TABLE deleteme_table
DROP COLUMN zippy;
-- Rename to original column name
alter table deleteme_table rename column tempcol to zippy;