2016-03-31 75 views
0

我試圖插入一個選擇查詢的值需要進入一列,到另一個表中以及像下面的其他幾列。 列的數據類型。從oracle中的select查詢插入表

COL1數,COL2號碼,COL3,VARCHAR,COL4至今,COL5-CHAR(1),COL6-CHAR(1)

insert into table1 (col1, col2, col3, col4, col5, col6, col7) 
select (uid, 22, 'HTML', sysdate,'null','null','N') 
from (select query here) 

但是當我運行上面的查詢我收到一個錯誤 - ORA-01858:在上述查詢的第2行附近發現一個數字時發現一個非數字字符。任何人都可以請指出我這有什麼問題,或者如果有更好的方法來做到這一點。謝謝!

+3

是什麼COL1的數據類型,... COL5?此錯誤與使用日期格式模型進行日期轉換有關。 – mathguy

+2

請編輯您的問題併爲'table1'添加完整的'CREATE TABLE'語句。不相關,但是:'select'部分列表中的圓括號完全沒有用處。 –

+2

大概'col1'是一個日期,並且你沒有顯示的子查詢正在返回一個不能隱式轉換爲日期的字符串。儘管很難說出你的真實情況,但你已經改變並隱藏了很多東西。你現在有太多的括號,首先,這會導致ORA-00907與你所展示的一樣。如果你顯示你的實際查詢和表定義會更容易。 –

回答

3

'null'是一個字符串。據推測,col5col6是一個數字列,我們不能將該字符串轉換爲數字。

要爲這些列使用null關鍵字這樣插入任何值:

insert into table1 (col1, col2, col3, col4, col5, col6, col7) 
select (uid, 22, 'HTML', sysdate, null, null,'N') 
from (select query here) 

或者由插入投影刪除:

insert into table1 (col1, col2, col3, col4, col7) 
select (uid, 22, 'HTML', sysdate, 'N') 
from (select query here)