Udostępnij za pomocą


GENERATE_SERIES (Transact-SQL)

Dotyczy do: SQL Server 2022 (16.x) Azure SQL Database AzureSQL Managed InstanceSQL Analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

Generuje serię liczb w danym interwale. Przedział i krok między wartościami szeregowymi są definiowane przez użytkownika.

Poziom kompatybilności 160

GENERATE_SERIES wymaga, aby poziom kompatybilności wynosił co najmniej 160. Gdy poziom kompatybilności jest mniejszy niż 160, silnik bazy danych nie jest w stanie znaleźć GENERATE_SERIES tej funkcji.

Aby zmienić poziom zgodności bazy danych, zobacz Wyświetlanie lub zmienianie poziomu zgodności bazy danych.

Transact-SQL konwencje składni

Składnia

GENERATE_SERIES ( start , stop [ , step ] )

Arguments

start

Pierwsza wartość w interwale. Start jest określany jako zmienna, literal lub wyrażenie skalarne typu tinyint, smallint, int, bigint, dziesiętny lub numeryczny.

zatrzymać

Ostatnia wartość w interwale. Stop jest określany jako zmienna, literal lub wyrażenie skalarne typu tinyint, smallint, int, bigint, dziesiętny lubnumeryczny. Seria zatrzymuje się, gdy ostatnia wygenerowana wartość kroku przekroczy wartość stop .

Typ danych dla stopmusi odpowiadać typowi danych dla start.

[ krok ]

Wskazuje liczbę wartości do zwiększania lub zmniejszania między krokami w szeregu. Step to wyrażenie typu tinyint, smallint, int, bigint, dziesiętny lub numeryczny. krok może być ujemny lub dodatni, ale nie może być zerowy (0).

Ten argument jest opcjonalny. Domyślna wartość kroku to 1, jeśli start jest mniejszy niż stop, w przeciwnym razie wartość domyślna to -1, jeśli start jest większy niż stop.

Jeśli start jest mniejszy niż stop , a dla kroku podana jest wartość ujemna, lub jeśli start jest większy niż stop , a dla kroku podana jest wartość dodatnia, zwracany jest pusty zbiór wyników.

Typy zwracane

Zwraca tabelę jednokolumnową zawierającą ciąg wartości, z których każda różni się od poprzedniej o krok. Nazwa kolumny to value. Wyjście jest tego samego typu co start i stop.

Permissions

Nie są wymagane żadne uprawnienia dla GENERATE_SERIES. Jednak użytkownik potrzebuje uprawnień EXECUTE do bazy danych oraz uprawnień do zapytań o dane używane jako wejścia.

Przykłady

W poniższych przykładach pokazano składnię wywoływania metody GENERATE_SERIES.

A. Generuj serię wartości całkowitych od 1 do 10 w przyrostach 1 (domyślnie)

SELECT value
FROM GENERATE_SERIES(1, 10);

Oto zestaw wyników.

value
-----------
1
2
3
4
5
6
7
8
9
10

B. Wygeneruj ciąg wartości całkowitych od 1 do 50 w krokach po 5

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

Oto zestaw wyników.

value
-----------
1
6
11
16
21
26
31
36
41
46

C. Generuj serię wartości dziesiętnych od 0,0 do 1,0 w krokach po 0,1

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);

Oto zestaw wyników.

value
---------------------------------------
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0