Oracle SQL查询,用CASE部分连接文件

时间:2020-03-06 14:52:07  来源:igfitidea点击:

我目前正在从多个表中生成SQL插入语句,并且在生成的数据中,我需要使用CASE语句,如下所示:

select 'INSERT INTO TABLE1 (f1, f2, f3, f4 ...) values ('
       ||t.f1||','
       ||CASE
             WHEN t.f2 > 0 THEN '1'
             ELSE '0'
         END CASE
  from table2 t , table3 t3

但是在这一点上,如果我想继续使用" ... END CASE ||",|| ....`我无法再运行查询,因为TOAD抱怨找不到FROM关键字。

一种快速的解决方案是将输出分成多个字段,然后将其保存为文本并进行编辑,但是必须有更好的方法。

解决方案

对于某些类似的情况,"解码"功能可以很好地工作。

我们也许可以将表达式(t.f2> 0)送入解码,然后进行翻译
" T"变成" 1"," F"变成" 0"。

我还没试过

使用END代替END CASE

select 'INSERT INTO TABLE1 (f1, f2, f3, f4 ...) values ('
       ||t.f1||','
       ||CASE
             WHEN t.f2 > 0 THEN '1'
             ELSE '0'
         END||','||t.f2
  from table2 t , table3 t3