GENERATE_SERIES (Transact-SQL)
适用于: sql Server 2022 (16.x) Azure SQL 数据库 Azure SQL 托管实例 Microsoft Fabric Warehouse 中的 Microsoft Fabric Warehouse 中的 SQL 分析终结点
在给定间隔内生成一系列数字。 序列值之间的间隔和步骤由用户定义。
兼容性级别 160
GENERATE_SERIES
要求兼容性级别至少为 160。 兼容性级别低于 160 时,数据库引擎将找不到 GENERATE_SERIES
函数。
若要更改数据库的兼容性级别,请参阅查看或更改数据库的兼容性级别。
语法
GENERATE_SERIES ( start , stop [ , step ] )
参数
start
间隔中的第一个值。 start 会指定为变量、文本或者类型为 tinyint、smallint、int、bigint、decimal 或 numeric 的标量表达式。
stop
间隔中的最后一个值。 stop 会指定为变量、文本或者类型为 tinyint、smallint、int、bigint、decimal 或 numeric 的标量表达式。 最后一个生成的步骤值超过 stop 值后,序列将停止。
stop 的数据类型必须与要启动的数据类型匹配。
[ 步骤 ]
表明在系列中的步骤之间要增加或减少的值的数量。 step 是 tinyint、smallint、int、bigint、decimal 或 numeric 类型的表达式。 step 可以是负数或正值,但不能为零 (0
)。
该参数可选。 如果 start 小于 stop,则 step 的默认值为 1,否则,如果 start 大于 stop,则默认值为 -1。
如果 start 小于 stop 并且为 step 指定了负值,或者如果 start 大于 stop 并且为 step指定了正值,会返回一个空结果集。
返回类型
返回一个包含一系列值的单列表,其中每个值与前一个值相差 step。 列的名称为 value
。 输出与 start 和 stop 的类型相同。
权限
GENERATE_SERIES
不需要任何权限。 但是,用户需要数据库 EXECUTE 权限,以及查询用作输入的任何数据的权限。
示例
以下示例展示了调用 GENERATE_SERIES
的语法。
A. 以 1 为增量生成 1 到 10 之间的一系列整数值(默认)
SELECT value
FROM GENERATE_SERIES(1, 10);
结果集如下。
value
-----------
1
2
3
4
5
6
7
8
9
10
B. 以 5 为增量生成 1 到 50 之间的一系列整数值
SELECT value
FROM GENERATE_SERIES(1, 50, 5);
结果集如下。
value
-----------
1
6
11
16
21
26
31
36
41
46
C. 以 0.1 为增量生成 0.0 到 1.0 之间的一系列十进制值
DECLARE @start decimal(2, 1) = 0.0;
DECLARE @stop decimal(2, 1) = 1.0;
DECLARE @step decimal(2, 1) = 0.1;
SELECT value
FROM GENERATE_SERIES(@start, @stop, @step);
结果集如下。
value
---------------------------------------
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0