如何通过将 NULL 值传递给列来从另一个 table 创建 table?

How to create table from another table with passing NULL values to a column?

我正在尝试用 CREATE AS SELECT 创建一个 table,我想在其中将 NULL 值传递给 col3

main 的结构:

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

我试过以下两种方法:

方法一:

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

方法二:

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

在方法 2 中,我的 col3 数据类型从 BLOB 更改为 CHAR(4)

我想用一个命令创建 temp table 并保持数据类型与table相同持有 NULLcol3

对于 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)