相关文章推荐
空虚的香烟  ·  ArcGIS pro ...·  6 月前    · 
冷静的马克杯  ·  20180923-WebService - ...·  1 年前    · 
有胆有识的斑马  ·  Mac ...·  1 年前    · 

适用于: SQL Server 2022 (16.x) Azure SQL 数据库 Azure SQL 托管实例 Microsoft Fabric 中的 SQL 分析终结点 Microsoft Fabric 中的仓库

在给定间隔内生成一系列数字。 序列值之间的间隔和步骤由用户定义。

兼容性级别 160

GENERATE_SERIES 要求兼容性级别至少为 160。 兼容性级别低于 160 时,数据库引擎将找不到 GENERATE_SERIES 函数。

若要更改数据库的兼容性级别,请参阅 查看或更改数据库的兼容性级别

Transact-SQL 语法约定

GENERATE_SERIES ( start , stop [ , step ] )

start

间隔中的第一个值。 start 会指定为变量、文本或者类型为 tinyint、smallint、int、bigint、decimal 或 numeric 的标量表达式

间隔中的最后一个值。 stop 会指定为变量、文本或者类型为 tinyint、smallint、int、bigint、decimal 或 numeric 的标量表达式。 最后一个生成的步骤值超过 stop 值后,序列将停止。

stop 的数据类型必须与 start 的数据类型匹配。

[ 步骤 ]

表明在系列中的步骤之间要增加或减少的值的数量。 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
-----------

B. 以 5 为增量生成 1 到 50 之间的一系列整数值

SELECT value
FROM GENERATE_SERIES(1, 50, 5);

下面是结果集。

value
-----------

°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
---------------------------------------
  • SEQUENCES (Transact-SQL)
  • 关系运算符 (Transact-SQL)
  •