【问题标题】:generate_series() equivalent in DB2DB2 中的 generate_series() 等效项
【发布时间】:2010-10-22 20:15:22
【问题描述】:

我正在尝试搜索 generate_series() 的 DB2 等效项(PostgreSQL 生成行的方式)。我显然不想用VALUES 语句对行进行硬编码。

select * from generate_series(2,4);

    generate_series
    -----------------
                    2
                    3
                    4
    (3 rows)

【问题讨论】:

    标签: sql db2 auto-generate


    【解决方案1】:

    where 子句需要更明确地说明递归的界限,以便 DB2 抑制警告。这是一个略微调整的版本,不会触发警告:

    with dummy(id) as (
        select 2 from SYSIBM.SYSDUMMY1    
        union all
        select id + 1 from dummy where id < 4
    )
    select id from dummy
    

    【讨论】:

      【解决方案2】:

      我设法编写了一个适合的递归查询:

      with dummy(id) as (
          select 2 from SYSIBM.SYSDUMMY1    
          union all
          select id + 1 from dummy where id + 1 between 2 and 4
      )
      select id from dummy
      

      查询可以适应任何你能想到的 for(;;)。

      【讨论】:

      • 结果正常,但它在 db2 v9 上生成警告 SQL0347W 递归公用表表达式“LOGINNAME.DUMMY”可能包含无限循环。 SQLSTATE=01605
      • 是的,我在 DB2v8 中也有它。我不知道如何删除它。
      猜你喜欢
      • 2021-05-09
      • 2011-04-22
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      相关资源
      最近更新 更多