Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2022 (16.x) e versões
posteriores Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database in Microsoft Fabric
Esta função devolve o valor máximo de uma lista de uma ou mais expressões.
Transact-SQL convenções de sintaxe
Sintaxe
GREATEST ( expression1 [ , ...expressionN ] )
Arguments
expressão1, expressãoN
Uma lista de expressões separadas por vírgulas de qualquer tipo de dado comparável. A GREATEST função requer pelo menos um argumento e suporta no máximo 254 argumentos.
Cada expressão pode ser uma constante, variável, nome de coluna ou função, e qualquer combinação de operadores aritméticos, bit a bit e string. São permitidas funções agregadas e subconsultas escalares.
Tipos de devolução
Devolve o tipo de dado com a precedência mais alta do conjunto de tipos passados para a função. Para obter mais informações, consulte Precedência de Tipos de Dados (Transact-SQL).
Se todos os argumentos tiverem o mesmo tipo de dado e o tipo for suportado para comparação, GREATEST devolve esse tipo.
Caso contrário, a função converterá implicitamente todos os argumentos para o tipo de dados de maior precedência antes da comparação e usará este tipo como tipo de retorno.
Para tipos numéricos, a escala do tipo de retorno será a mesma do argumento de maior precedência, ou a maior escala se mais do que um argumento for do tipo de dado de maior precedência.
Observações
Todas as expressões na lista de argumentos devem ser de um tipo de dado comparável e que possa ser implicitamente convertido para o tipo de dado do argumento com maior precedência.
A conversão implícita de todos os argumentos para o tipo de dados de maior precedência ocorre antes da comparação.
Se a conversão implícita de tipos entre os argumentos não for suportada, a função falhará e devolverá um erro.
Para mais informações sobre conversão implícita e explícita, consulte Conversão de Tipos de Dados (Motor de Base de Dados).
Se um ou mais argumentos não NULLforem , então NULL os argumentos são ignorados durante a comparação. Se todos os argumentos forem NULL, então GREATEST retorna NULL.
A comparação de argumentos de carácter segue as regras da Precedência de Colocação (Transact-SQL).
Os seguintes tipos não são suportados para comparação em GREATEST: varchar(max), varbinary(max) ou nvarchar(max) com exceção de 8.000 bytes, cursor, geometria, geografia, imagem, tipos definidos pelo utilizador sem ordem de bytes, ntext, table, text e xml.
Os tipos de dados varchar(max),varbinary(max) e nvarchar(max) são suportados para argumentos com 8.000 bytes ou menos, e serão implicitamente convertidos em varchar(n), varbinary(n) e nvarchar(n), respetivamente, antes da comparação.
Por exemplo, varchar(max) pode suportar até 8.000 caracteres se usar um conjunto de caracteres de codificação de um único byte, e nvarchar(max) pode suportar até 4.000 pares de bytes (assumindo codificação de caracteres UTF-16).
Examples
A. Devolver valor máximo a partir de uma lista de constantes
O exemplo seguinte devolve o valor máximo da lista de constantes que é fornecida.
A escala do tipo de retorno é determinada pela escala do argumento com o tipo de dado de maior precedência.
SELECT GREATEST('6.62', 3.1415, N'7') AS GreatestVal;
GO
Aqui está o conjunto de resultados.
GreatestVal
--------
7.0000
(1 rows affected)
B. Devolver valor máximo a partir de uma lista de constantes de carácter
O exemplo seguinte devolve o valor máximo da lista de constantes de carácter que é fornecida.
SELECT GREATEST('Glacier', N'Joshua Tree', 'Mount Rainier') AS GreatestString;
GO
Aqui está o conjunto de resultados.
GreatestString
-------------
Mount Rainier
(1 rows affected)
C. Devolver valor máximo a partir de uma lista de argumentos de coluna
Este exemplo devolve o valor máximo de uma lista de argumentos de coluna e ignora NULL os valores durante a comparação. Este exemplo utiliza a AdventureWorksLT base de dados, que pode ser rapidamente instalada como base de dados de exemplo para uma nova Azure SQL Database. Para obter mais informações, consulte bancos de dados de exemplo do AdventureWorks.
SELECT P.Name,
P.SellStartDate,
P.DiscontinuedDate,
PM.ModifiedDate AS ModelModifiedDate,
GREATEST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) AS LatestDate
FROM SalesLT.Product AS P
INNER JOIN SalesLT.ProductModel AS PM
ON P.ProductModelID = PM.ProductModelID
WHERE GREATEST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) >= '2007-01-01'
AND P.SellStartDate >= '2007-01-01'
AND P.Name LIKE 'Touring %'
ORDER BY P.Name;
Aqui está o conjunto de resultados.
LatestDate escolhe o maior valor de data entre os três valores, ignorando NULL.
Name SellStartDate DiscontinuedDate ModelModifiedDate LatestDate
-------------------- ----------------------- ------------------- ----------------------- -----------------------
Touring Pedal 2007-07-01 00:00:00.000 NULL 2009-05-16 16:34:29.027 2009-05-16 16:34:29.027
Touring Tire 2007-07-01 00:00:00.000 NULL 2007-06-01 00:00:00.000 2007-07-01 00:00:00.000
Touring Tire Tube 2007-07-01 00:00:00.000 NULL 2007-06-01 00:00:00.000 2007-07-01 00:00:00.000
(3 rows affected)
D. Utilização GREATEST com variáveis locais
Este exemplo serve GREATEST para determinar o valor máximo de uma lista de variáveis locais dentro do predicado de uma WHERE oração.
CREATE TABLE dbo.Studies (
VarX VARCHAR(10) NOT NULL,
Correlation DECIMAL(4, 3) NULL
);
INSERT INTO dbo.Studies
VALUES ('Var1', 0.2),
('Var2', 0.825),
('Var3', 0.61);
GO
DECLARE @PredictionA DECIMAL(2, 1) = 0.7;
DECLARE @PredictionB DECIMAL(3, 1) = 0.65;
SELECT VarX,
Correlation
FROM dbo.Studies
WHERE Correlation > GREATEST(@PredictionA, @PredictionB);
GO
Aqui está o conjunto de resultados. Apenas são exibidos valores superiores a 0,7.
VarX Correlation
---------- -----------
Var2 .825
(1 rows affected)
E. Uso GREATEST com colunas, constantes e variáveis
Este exemplo serve GREATEST para determinar o valor máximo de uma lista mista que inclui colunas, constantes e variáveis.
CREATE TABLE dbo.Studies (
VarX VARCHAR(10) NOT NULL,
Correlation DECIMAL(4, 3) NULL
);
INSERT INTO dbo.Studies
VALUES ('Var1', 0.2),
('Var2', 0.825),
('Var3', 0.61);
GO
DECLARE @VarX DECIMAL(4, 3) = 0.59;
SELECT VarX,
Correlation,
GREATEST(Correlation, 0, @VarX) AS GreatestVar
FROM dbo.Studies;
GO
Aqui está o conjunto de resultados.
VarX Correlation GreatestVar
---------- --------------------- ---------------------
Var1 0.200 0.590
Var2 0.825 0.825
Var3 0.610 0.610
(3 rows affected)