2016-12-16 77 views
-2

直到今天,我們使用在Varchar列中輸入數值,以便Oracle將該varchar字段轉換爲數字字段。 現在,當我們試圖插入字符值時,它會拋出ORA-01722(無效號碼)。Oracle將Varchar字段轉換爲數字如何將其轉換回Varchar

任何人都可以幫我把它轉換回varchar字段嗎?

+0

發佈表描述和拋出異常的查詢 – GurV

+0

你是什麼意思* Oracle將該varchar字段轉換爲數字字段*? – GurV

+1

歡迎來到SO。請閱讀[問]併發布相關細節。謝謝。 – 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;