我正在使用ORACLE DATABASE 11g Express Edition和Microsoft SQL Server Management Studio17。
我有两个桌子
第一张桌子:汽车
Code | Brand_Model
01 | honda/HVR
02 | Volks/Golf
03 | Fiat
第二张表:INFOS
Brand | Model
is empty for now
问题出在这里:
我需要从cars.brand_model中选择数据并拆分。 '/'之前的数据,我需要放入INFOS.Brand,'/'之后的数据,我需要放入INFOS.Model 而且,当没有“ /”时(例如表CARS中的代码3),我需要将信息“无信息”放入INFOS.Model
我是这样选择的:
select
iif(CHARINDEX('/',c.brand_model,1) > 0, substring(c.brand_model,0,charindex('/',c.brand_model,1)),c.brand_model) as brand,
iif(CHARINDEX('/',c.brand_model,1) > 0, substring(c.brand_model,charindex('/',c.brand_model,1)+1,len(c.brand_model)),'NO INFORMATION') as model
from CARS c;
此选择完全按照我的需要显示信息,但这只是一个选择。
Brand Model
Honda HVR
Volks Golf
Fiat No Information
我需要将这些信息(这些选择)放在“信息”表中。
我使用以下代码放置品牌:
insert into infos (brand) select
iif(CHARINDEX('/',c.brand_model,1) > 0, substring(c.brand_model,0,charindex('/',c.brand_model,1)),c.brand_model)
from CARS c
可以。 但是现在,我需要使用模型在INFOS表中进行更新。 我该怎么办?
答案 0 :(得分:0)
虽然您共享的代码似乎不是Oracle的,但是如果要插入数据(如果不存在)并更新记录(如果已经存在),则可以始终使用MERGE语句。
答案 1 :(得分:0)
这是有效的Oracle语法,也许您觉得它有用:
insert into infos (brand, model)
select case when instr(brand_model, '/') > 0
then substr(brand_model, 1, instr(brand_model, '/') - 1)
else brand_model
end,
case when instr(brand_model, '/') > 0
then substr(brand_model, instr(brand_model, '/') + 1)
else 'no information'
end
from cars