2016-12-16 5 views
-2

今日、Varcharカラムに数値を入力して、Oracleがそのvarcharフィールドを数値フィールドに変換しました。 そして、文字値を挿入しようとすると、ORA-01722(無効な数値)が投げられています。OracleはVarcharフィールドを数値に変換しました。VARCHARに変換する方法

誰でも私をvarcharフィールドに戻すために助けてくれますか?

+0

ポストテーブルの説明と例外 – GurV

+0

を投げ、あなたは*で何を意味Oracleは*数値フィールドにそのvarchar型フィールドを変換し、クエリ? – GurV

+1

ようこそ。 [ask]を読んで、関連情報を投稿してください。ありがとう。 – OldProgrammer

答えて

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; 
関連する問題