2017-04-27 87 views
2

我想創建一個CREATE AS SELECT表,其中我想通過NULL值到col3如何通過將NULL值傳遞到列來從另一個表創建表?

main

結構:

SQL> desc main 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
col1          NOT NULL NUMBER(10) 
col2            VARCHAR2(15) 
col3            BLOB 
col4            VARCHAR2(15) 

我已經試過以下2種方法:

方法1:

CREATE TABLE temp 
( 
col1, col2, col3, col4 
) AS 
SELECT 
col1, col2, NULL, col4 
FROM main; 

方法2:

CREATE TABLE temp 
( 
col1, col2, col3, col4 
) AS 
SELECT 
col1, col2, 'NULL', col4 
FROM main; 

在方法2 ,我的col3數據類型從BLOB更改爲CHAR(4)

我想用一個命令來創建temp表,並保持數據類型相同的同臺舉辦NULLcol3

回答

2

對於BLOB的,你應該使用的EMPTY_BLOB代替NULL

SQL> desc main; 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
COL1          NOT NULL NUMBER(10) 
COL2            VARCHAR2(15) 
COL3            BLOB 
COL4            VARCHAR2(15) 

SQL> create table temp (col1, col2, col3, col4) 
    2 as select col1, col2, empty_blob(), col4 
    3 from main; 

Table created. 

SQL> desc temp; 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
COL1          NOT NULL NUMBER(10) 
COL2            VARCHAR2(15) 
COL3            BLOB 
COL4            VARCHAR2(15) 
+0

謝謝@Aleksej。這已經解決了我的查詢。 –

相關問題