【问题标题】:insert into a table from a select query in oracle从 oracle 中的选择查询中插入表
【发布时间】:2016-03-31 18:16:24
【问题描述】:

我正在尝试将需要进入一列的选择查询的值插入到另一个表中,以及如下所示的其他几列。 列的数据类型。

col1-number, col2-number, col3-varchar, col4-date, col5-char(1),col6-char(1)

insert into table1 (col1, col2, col3, col4, col5, col6, col7)
select ( uid, 22, 'HTML', sysdate,'null','null','N')
from ( select query here)

但是当我运行上述查询时,我收到一个错误 - ORA-01858:在上述查询的第 2 行附近预期有数字的地方发现了一个非数字字符。谁能指出我有什么问题,或者是否有更好的方法来做到这一点。谢谢!

【问题讨论】:

  • col1, ... col5的数据类型是什么?此错误与使用日期格式模型转换为日期有关。
  • edit 您的问题并为table1 添加完整的CREATE TABLE 语句。不相关,但是:select 部分中列列表周围的括号完全没用。
  • 大概col1 是一个日期,而您没有显示的子查询正在返回一个无法隐式转换为日期的字符串。尽管很难说出你真正在做什么,但你已经改变和隐藏了很多。你现在有太多的括号,首先,这会导致 ORA-00907 与你所显示的一样。如果您显示您的实际查询和表定义会容易得多。
  • col4 属于CHARtype :)
  • 在问题上添加了列类型。子查询返回数字,需要在 col1 中插入。希望这是有道理的。谢谢

标签: oracle select insert


【解决方案1】:

'null' 是一个字符串。大概col5col6 是一个数字列,我们不能将该字符串转换为数字。

要在这些列中不插入任何值,请使用 null 关键字,如下所示:

insert into table1 (col1, col2, col3, col4, col5, col6, col7)
select ( uid, 22, 'HTML', sysdate, null, null,'N')
from ( select query here)

或者从插入投影中删除它们:

insert into table1 (col1, col2, col3, col4, col7)
select ( uid, 22, 'HTML', sysdate, 'N')
from ( select query here)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2018-07-27
    • 2016-08-26
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多