我目前正在从多个表生成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关键字。

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

有帮助吗?

解决方案

使用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

其他提示

对于某些类似的情况,“解码”是指“解码”。功能很好。

您可以将表达式(t.f2> 0)提供给解码,然后翻译 'T'变为'1','F'变为'0'。

我没试过这个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top