如何在SQL中生成一个数字列表,因为它是一个理解列表?

时间:2013-01-15 14:00:39

标签: sql list-comprehension sqlanywhere

就我而言,在任何地方使用sql(sybase)。

类似于haskell的东西。 [1..100]。

我不知道如何生成1到100之间的随机简单列表。

我只能这样做:

select 1
union 
select 2
union
select 3

Google没有提供任何样本,我怀疑此功能不存在。

3 个答案:

答案 0 :(得分:3)

SQL Anywhere包含sa_rowgenerator存储过程,可用于此目的。例如:

select row_num from sa_rowgenerator( 1, 100 )

返回100行的结果集,从1到100(含)。文档的链接(对于版本12.0.1)是here

免责声明:我在SQL Anywhere工程中为SAP / Sybase工作。

答案 1 :(得分:2)

我发现简短列表的最简单方法是:

select t.*
from (select row_number() over (order by (select NULL)) as num
      from Information_Schema.columns
     ) t
where num <= 100

列表通常至少有100行。也可以使用其他表格。

对于大数字,如下所示:

with digits as (
      select 0 as dig union all select 1 union all select 2 union all select 3 union all select 4 union all
      select 5 union all select 6 union all select 7 union all select 8 union all select 9
),
     numbers as
      select d1.dig*10+d2.dig
      from digits d1 cross join
           digits d2
)
 . . .

答案 2 :(得分:1)

Oracle queries - use any number to start/end:

 SELECT 99 + ROWNUM
   FROM dual       
 CONNECT BY ROWNUM <= 100 + 1
/

SELECT 99 + LEVEL
  FROM dual       
CONNECT BY LEVEL <= 100 + 1
/