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`列的数据类型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值