2

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

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

4

2 回答 2

3

使用 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
于 2008-09-29T10:04:49.970 回答
1

对于一些类似的情况,“解码”功能效果很好。

您可以将表达式 (t.f2 > 0) 输入解码器,然后将“T”转换为“1”,将“F”转换为“0”。

我没试过这个。

于 2008-09-29T10:00:03.210 回答