Oracle将Varchar字段转换为如何将其转换回Varchar的数字

时间:2016-12-16 04:08:18

标签: oracle

直到今天我们使用在Varchar列中输入数值,以便Oracle将该varchar字段转换为数字字段。 现在,当我们尝试插入字符值时,它会抛出ORA-01722(无效数字)。

有人可以帮助我将其转换回varchar字段吗?

1 个答案:

答案 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;