Partilhar via


GENERATE_SERIES (Transact-SQL)

Aplica-se a: SQL Server 2022 (16.x) Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric

Gera uma série de números em um determinado intervalo. O intervalo e a etapa entre os valores da série são definidos pelo usuário.

Nível de compatibilidade 160

GENERATE_SERIES requer que o nível de compatibilidade seja, no mínimo, 160. Quando o nível de compatibilidade é inferior a 160, o Mecanismo de Banco de Dados não consegue localizar a função GENERATE_SERIES.

Para alterar o nível de compatibilidade de um banco de dados, consulte Exibir ou alterar o nível de compatibilidade de um banco de dados.

Convenções de sintaxe de Transact-SQL

Sintaxe

GENERATE_SERIES ( start , stop [ , step ] )

Argumentos

start

O primeiro valor no intervalo. start é especificado como uma variável, um literal ou uma expressão escalar do tipo tinyint, smallint, int, bigint, decimal ou numeric.

stop

O último valor no intervalo. stop é especificado como uma variável, um literal ou uma expressão escalar do tipo tinyint, smallint, int, bigint, decimal ou numeric. A série é interrompida quando o valor da última etapa gerada excede o valor de stop.

O tipo de dados para stop deve corresponder ao tipo de dados para start.

[ etapa ]

Indica o número de valores a serem incrementados ou decrementados entre etapas na série. step é uma expressão do tipo tinyint, smallint, int, bigint, decimal ou numeric. step pode ser negativo ou positivo, mas não pode ser zero (0).

Esse argumento é opcional. O valor padrão de step será 1 se start for menor que stop. Caso contrário, o valor padrão será -1 se start for maior que stop.

Se start for menor que stop e um valor negativo for especificado para step, ou se start for maior que stop e um valor positivo for especificado para step, um conjunto de resultados vazio será retornado.

Tipos de retorno

Retorna uma tabela de coluna única contendo uma sequência de valores em que cada um difere do anterior por step. O nome da coluna é value. A saída é do mesmo tipo que start e stop.

Permissões

Nenhuma permissão é necessária para GENERATE_SERIES. No entanto, o usuário precisa da permissão EXECUTE no banco de dados e da permissão para consultar os dados que forem usados como entradas.

Exemplos

Os exemplos a seguir demonstram a sintaxe para chamar GENERATE_SERIES.

R. Gerar uma série de valores inteiros entre 1 e 10 em incrementos de 1 (padrão)

SELECT value
FROM GENERATE_SERIES(1, 10);

Veja a seguir o conjunto de resultados.

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

B. Gerar uma série de valores inteiros entre 1 e 50 em incrementos de 5

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

Veja a seguir o conjunto de resultados.

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

C. Gerar uma série de valores decimais entre 0,0 e 1,0 em incrementos de 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);

Veja a seguir o conjunto de resultados.

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