【问题标题】:Oracle sql query, concatenate fileds with CASE sectionOracle sql 查询,将字段与 CASE 部分连接起来
【发布时间】:2010-09-13 23:18:21
【问题描述】:

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

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

【问题讨论】:

    标签: sql oracle syntax case toad


    【解决方案1】:

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

    您也许可以将表达式 (t.f2 > 0) 输入解码器,然后进行翻译 'T' 变成 '1' 和 'F' 变成 '0'。

    我没试过。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 2018-05-04
        • 2017-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多