2017-04-27 31 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。这已经解决了我的查询。 –

相关问题