共用方式為


GENERATE_SERIES (Transact-SQL)

適用於:Microsoft Fabric 中Microsoft網狀架構倉儲中的 SQL Server 2022 (16.x) Azure SQL 資料庫 Azure SQL 受控執行個體 SQL 分析端點

在指定間隔內產生一系列數字。 數列值間的間隔和步驟是由使用者所定義。

相容性層級 160

GENERATE_SERIES 需要相容性層級至少為160。 當相容性層級小於 160 時,資料庫引擎 找不到函GENERATE_SERIES式。

若要變更資料庫的相容性層級,請參閱 檢視或變更資料庫的相容性層級

Transact-SQL 語法慣例

語法

GENERATE_SERIES ( start , stop [ , step ] )

引數

開始

間隔中的第一個值。 start 被指定為類型 tinyintsmallintintbigintdecimalnumeric的變數、常值或純量 運算式

停止

間隔中的最後一個值。 stop 被指定為類型 tinyintsmallintintbigintdecimalnumeric的變數、常值或純量 運算式。 一旦最後產生的步驟值超過 stop 值,數列就會停止。

stop 數據類型必須符合 start數據類型。

[ 步驟 ]

指示在數列中的步驟間遞增或遞減之值的數量。 step 是類型 tinyintsmallintintbigintdecimalnumeric運算式step 可以是負數或正數,但不能為零 (0)。

此引數是選擇性的。 如果 start 小於 stop,則 step 的預設值為 1,否則如果 start 大於 stop,則預設值為 -1。

如果 start 小於 stop 且為 step 指定了負值,或如果 start 大於 stop 且為 step 指定了正值,則會傳回空的結果集。

傳回類型

傳回具有一系列值的單一資料行表格,該系列值以 step 與前項作分別。 資料行的名稱為 value。 輸出的類型與 startstop 相同。

權限

不需要 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