Oracle SQL每日一问之ORA-01723:zero-length columns are not allowed

我:

CREATE TABLE TABLE_1 PARALLEL 8 AS
SELECT /*+parallel(8)*/ t1.emp_no,
 NULL emp_name
  FROM temp1 t1; 

 

[AI机器人bot:] 在你的SQL语句中,错误 "zero-length columns are not allowed" 可能是由于在创建表时没有为 `NULL emp_name` 指定数据类型。即使在 `CREATE TABLE ... AS SELECT` 语句中,SQL通常会根据 `SELECT` 语句中的列推断新表的结构,但在某些情况下(如处理NULL值),可能需要明确指定数据类型。

要解决这个问题,你可以在SELECT语句中为 `NULL emp_name` 指定一个默认的数据类型。例如,如果你期望 `emp_name` 列是布尔类型或整数类型,你可以将它改成如下形式:

```sql
CREATE TABLE TABLE_1 PARALLEL 8 AS
SELECT /*+parallel(8)*/ t1.emp_no,
       CAST(NULL AS INT) AS emp_name
  FROM temp1 t1;
```

在这个例子中,我将 `NULL` 显式转换为 `INT` 类型。根据你的实际需要,你可以将 `INT` 替换为其他合适的数据类型,比如 `VARCHAR(255)`、`BOOLEAN` 等。这样做可以确保数据库在创建表时能够正确推断和分配 `emp_name`列的数据类型。

 

你可能感兴趣的:(ORACLE,SQL,oracle,sql,数据库)