SQL生成1到100之间的数字列表

ram*_*ddy 45 sql oracle plsql

使用DUAL表,如何获得1到100的数字列表?

Pet*_*ang 69

你的问题是很难理解的,但如果你想从选择号码1100,那么这应该做的伎俩:

Select Rownum r
From dual
Connect By Rownum <= 100
Run Code Online (Sandbox Code Playgroud)


Ult*_*mit 24

ORACLE PL/SQL中另一个有趣的解决方案:

    SELECT LEVEL n
      FROM DUAL
CONNECT BY LEVEL <= 100;
Run Code Online (Sandbox Code Playgroud)

  • 这是普通的Oracle SQL.它在PL/SQL上下文之外工作正常. (7认同)

Luk*_*der 12

这样做很难.使用awesome MODEL子句:

SELECT V
FROM DUAL
MODEL DIMENSION BY (0 R)
      MEASURES (0 V)
      RULES ITERATE (100) (
        V[ITERATION_NUMBER] = ITERATION_NUMBER + 1
      )
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)

证明:http://sqlfiddle.com/#!4/ d41d8/ 20837

  • 这很容易,为什么不模式匹配... :-) (2认同)
  • @igr:我挑战你实际提供答案:-) (2认同)
  • @zygimantus,是的,它是`R`的*"当前值"*的一些"怪异"语法,意思是等式左边的值.有关详细信息,[请参阅Oracle`MODEL`白皮书](http://www.oracle.com/technetwork/middleware/bi-foundation/10gr1-twp-bi-dw-sqlmodel-131067.pdf) (2认同)

ech*_*cho 8

使用Oracle的子查询工厂子句“ WITH”,您可以选择1到100之间的数字:

WITH t(n) AS (
  SELECT 1 from dual
  UNION ALL
    SELECT n+1 FROM t WHERE n < 100
)
SELECT * FROM t;
Run Code Online (Sandbox Code Playgroud)


Unr*_*son 7

彼得的回答也是我最喜欢的.

如果您正在寻找更多细节,可以在这里找到一个非常好的概述,IMO .
特别有趣的是阅读基准.


vad*_*ipp 6

如果你希望你的整数绑定在两个整数之间(即从1以外的其他东西开始),你可以使用这样的东西:

with bnd as (select 4 lo, 9 hi from dual)
select (select lo from bnd) - 1 + level r
from dual
connect by level <= (select hi-lo from bnd);
Run Code Online (Sandbox Code Playgroud)

它给:

4
5
6
7
8
Run Code Online (Sandbox Code Playgroud)


Luk*_*zda 5

您可以使用XMLTABLE

SELECT rownum
FROM XMLTABLE('1 to 100');
Run Code Online (Sandbox Code Playgroud)

DBFiddle演示