适用于: SQL Server 2022 (16.x)
Azure SQL 数据库
Azure SQL Managed Instance
SQL Analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
在给定间隔内生成一系列数字。 序列值之间的间隔和步骤由用户定义。
兼容性级别 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 可以是负数或正值,但不能为零 ()。
该参数可选。 如果 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