【发布时间】:2019-11-22 07:27:21
【问题描述】:
它有点复杂,但我试着解释一下。我在数据库中有一个表,看起来像这样。这是partno表
... | Part No | Convert | ...
... | 00000 | ABC | ...
... | 00001 | DEF | ...
所有输入值必须以 00000 或 00001 开头,例如 = 0000012345、000014321。
然后,根据这前 5 个值(00000 和 00001),将其转换为类似于 Convert 列。
例子:
输入:0000012345
预期:ABC12345
输入:000014321
预期:DEF4321
意思是我必须根据上表转换我得到的输入,但我不知道该怎么做。所以,我作弊并做出这样的查询:
Insert into pencil (pencil_no,lastdate)
values('ABC'|| SUBSTR('" + pen + "',1,2), sysdate)
//pen is the input value
当我得到我想要的输出时它就起作用了。但不幸的是,这不是正确的方法,因为表中的数据会更新和更改。
谁能指导我如何做到这一点? 提前致谢
更新: 我按照以下答案中的指南进行操作:
insert into pencil(pencil_no, lastdate)
select c.convert || substr('"+ pen + "', 22, 11), sysdate
from partnotable c
where c.PART_NO = substr('" + pen + "', 1, 15)
并且我设法将它插入到我的数据库中。不幸的是,有一个错误是 UPDATE 或 INSERT 语句试图插入重复键。 对于在 DBMS MAC 模式下配置的 Trusted Oracle,您可能会看到 如果在不同级别存在重复条目,则会显示此消息。 我相信我输入的输入与表中的任何数据都不重复。当我运行查询时a rows have been inserted,我可以在我的数据库中查看它,但是当我运行程序时,输出不显示。
我尝试通过添加增量来遵循此方法http://www.lifeaftercoffee.com/2006/02/17/how-to-create-auto-increment-columns-in-oracle/,但仍然失败。
【问题讨论】:
标签: sql database oracle sql-insert