我正在尝试使用CREATE AS SELECT
创建一个表格,我希望将NULL
值传递给col3
。
main
的结构:
SQL> desc main
Name Null? Type
----------------------------------------- -------- ----------------------------
col1 NOT NULL NUMBER(10)
col2 VARCHAR2(15)
col3 BLOB
col4 VARCHAR2(15)
我尝试了以下两种方法:
方法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
表,并保持数据类型与保存 NULL
值的表相同col3
答案 0 :(得分: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)