代码之家  ›  专栏  ›  技术社区  ›  Zsolt Botykai

Oracle SQL查询,将文件与case节连接起来

  •  2
  • Zsolt Botykai  · 技术社区  · 16 年前

    我当前正在从多个表生成SQL INSERT语句,在生成的数据中,我需要使用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||','|| .... 我不能再运行查询了,因为蟾蜍抱怨找不到from关键字。

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

    2 回复  |  直到 8 年前
        1
  •  3
  •   pablo    16 年前

    使用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
    
        2
  •  1
  •   Walter Mitty    16 年前

    在一些类似的情况下,“解码”功能工作得很好。

    您可以将表达式(t.f2>0)输入解码,然后翻译 “t”变为“1”,“f”变为“0”。

    我没试过。