关于insert into tableA (字段1....字段N) select * from tableB
使用Case When 插入遇到的坑
第一种 Case 后接 字段名 (可以查询tableB的数据出来,也可以插入tableA)
case tddp.WINNING_BIDDER
when '中国电信' then '12'
when '中国移动' then '10'
when ''中国联合网络通信' then '11'
else ''
end as TENDER_COMPANY,
第二种 Case 后接 字段名 ,When中对该字段使用函数(可以查询tableB的数据出来,无法插入tableA)
case tddp.WINNING_BIDDER
when instr(tddp.WINNING_BIDDER ,'中国电信')>0 then '12'
when instr(tddp.WINNING_BIDDER ,'中国移动')>0 then '10'
when instr(tddp.WINNING_BIDDER ,'中国联合网络通信')>0 then '11'
else ''
end as TENDER_COMPANY,
第三种Case 方式解决 第二种when 使用函数遇到无法插入tableA的问题 (case 去掉 字段名) 如图
case
when instr(tddp.WINNING_BIDDER ,'中国电信')>0 then '12'
when instr(tddp.WINNING_BIDDER ,'中国移动')>0 then '10'
when instr(tddp.WINNING_BIDDER ,'中国联合网络通信')>0 then '11'
else ''
end as TENDER_COMPANY,
注意: 如果用以下这种方式
case tddp.WINNING_BIDDER
when instr(tddp.WINNING_BIDDER ,'中国电信')>0 then '12'
else ''
end as TENDER_COMPANY,
when instr(tddp.WINNING_BIDDER ,'中国电信')>0 then '12'
else ''
end as TENDER_COMPANY,
就是拿 tddp.WINNING_BIDDER
是否等于 instr(tddp.WINNING_BIDDER ,'中国电信')>0 ,导致SQL因为类型问题出错.