使用 LEVEL 在 SQL 中显示数字序列
术语LEVEL是指 Oracle 中的伪列,用于在层次查询中以数字格式标识层次级别(父->子)。 LEVEL 为根行返回 1,为根行的子行返回 2,依此类推,作为树状结构。 LEVEL 必须与CONNECT BY子句一起使用。 CONNECT BY子句定义层次结构的父行和子行之间的层次关系。 DUAL是 Oracle 数据库与数据字典一起自动生成的虚拟表。
示例 1:
SELECT Level AS Sequence
FROM Dual
CONNECT BY Level <= 5
解释:
上面的查询将执行具有初始值 1 的来自对偶的 Level,它是虚拟表。 “序列”充当别名,即列的临时名称。在查询中,将检查条件并使用 Connect By 在 Level 值为 1 和指定条件之间创建关系。它将显示值,直到它通过指定的条件。
输出:
Sequence |
---|
1 |
2 |
3 |
4 |
5 |
从特定数字开始序列:
级别有助于从任何特定的初始值开始一个数字序列。只需在 Connect By 中具有条件的 Level 加一个小于该值的值。
句法:
SELECT Level+(n-1) AS Alias Name
FROM Dual
CONNECT BY Level <= 10
其中 n 是初始特定编号, Alias Name是临时定义的列名称。
示例 2:
SELECT Level+(6-1) AS Sequence
FROM Dual
CONNECT BY Level <= 10
解释:
用于显示从 6 到 10 的数字序列。在上面的示例中,使用 Connect By 将小于 6 的一个加到 Level 并具有直到 10 的条件。它将执行并将范围指定的值显示为来自虚拟表 Dual 的列名“Sequence”。
输出:
Sequence |
---|
6 |
7 |
8 |
9 |
10 |
示例 3:
SELECT Level AS Sequence, Sysdate AS System_date
FROM Dual
CONNECT BY Level <= 5
解释:
上面的查询将执行并显示数字序列和日期。级别具有临时列名称序列和日期具有列名称 System_date,如定义。它将从名为 Dual 的虚拟表中检索数据。根据 Connect By 中指定的条件,它将有 5 行数,从 1 到 5 在 Sequence 列中,并且在 System_date 列中的所有 5 行中具有相同的日期。
输出:
Sequence | System_date |
---|---|
1 | 2019-01-05 |
2 | 2019-01-05 |
3 | 2019-01-05 |
4 | 2019-01-05 |
5 | 2019-01-05 |