更改参考数据库表的输入值

问题描述 投票:0回答:1

它有点复杂,但我尝试对其进行解释。我在数据库中的某个表看起来像这样。这是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

它在我得到所需的输出时起作用。但是不幸的是,这不是正确的方法,因为表中的数据将被更新和更改。

有人可以指导我如何执行此操作吗?在此先感谢

sql oracle sql-insert
1个回答
0
投票

您的插入语句需要包含您的转换表的查找,在我的插图中,我将其称为CON​​VERT_TABLE。

您需要两次引用输入值,一次用于查找,一次用于插入值。我在这里使用SQL * Plus替代变量;您将需要调整语法以使其适合,但是您正在运行SQL。

insert into pencil (pencil_no,lastdate) 
select c.convert || substr('&&input_value',6), sysdate
from convert_table c
where c.part_no =  substr('&&input_value',1, 5)
© www.soinside.com 2019 - 2024. All rights reserved.