Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2022 (16.x) a nowše verzie
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database in Microsoft Fabric
Tato funkce vrací maximální hodnotu ze seznamu jednoho nebo více výrazů.
Syntaxe
GREATEST ( expression1 [ , ...expressionN ] )
Arguments
výraz1, výrazN
Seznam výrazů oddělených čárkami pro libovolný srovnatelný datový typ. Funkce GREATEST vyžaduje alespoň jeden argument a podporuje maximálně 254 argumentů.
Každý výraz může být konstanta, proměnná, název sloupce nebo funkce a libovolná kombinace aritmetických, bitových a řetězcových operátorů. Jsou povoleny agregované funkce a skalární poddotazy.
Návratové typy
Vrátí datový typ s nejvyšší předností z množiny typů předaných funkci. Další informace naleznete v tématu priorita datových typů (Transact-SQL).
Pokud mají všechny argumenty stejný datový typ a typ je podporován pro porovnání, GREATEST vrací tento typ.
Jinak funkce implicitně převede všechny argumenty na datový typ s nejvyšší prioritou před porovnáním a použije tento typ jako návratový typ.
U číselných typů bude škála návratového typu stejná jako u argumentu nejvyšší přednosti, nebo u největšího měřítka, pokud je více argumentů s datovým typem s nejvyšší prioritou.
Poznámky
Všechny výrazy v seznamu argumentů musí být datového typu, který je srovnatelný a který lze implicitně převést na datový typ argumentu s nejvyšší prioritou.
Před porovnáním probíhá implicitní převod všech argumentů na datový typ s nejvyšší prioritou.
Pokud není podporována implicitní převod typů mezi argumenty, funkce selže a vrátí chybu.
Pro více informací o implicitní a explicitní konverzi viz Převod datových typů (Database Engine).
Pokud jeden nebo více argumentů není NULL, pak NULL jsou argumenty při srovnávání ignorovány. Pokud jsou všechny argumenty , NULLpak GREATEST vrací NULL.
Porovnání argumentů postav se řídí pravidly Collation Precedence (Transact-SQL).
Následující typy nejsou podporovány pro porovnání v GREATEST: varchar(max),varbinary(max) nebo nvarchar(max) s délkou přesahující 8 000 bajtů, kurzor, geometrie, geografie, obrazu, uživatelsky definovaných typech bez bajtů, ntext, tabulka, text a xml.
Datové typy varchar(max),varbinary(max) a nvarchar(max) jsou podporovány pro argumenty o velikosti 8 000 bajtů nebo méně a budou implicitně převedeny na varchar(n), varbinary(n) a nvarchar(n) před porovnáním.
Například varchar(max) může podporovat až 8 000 znaků při použití jednobajtové kódovací sady znaků a nvarchar(max) až 4 000 bajtových párů (za předpokladu kódování znaků UTF-16).
Examples
A. Vraťte maximální hodnotu ze seznamu konstant
Následující příklad vrací maximální hodnotu ze seznamu konstant, které jsou uvedeny.
Měřítko typu návratu je určeno měřítkem argumentu s datovým typem s nejvyšší prioritou.
SELECT GREATEST('6.62', 3.1415, N'7') AS GreatestVal;
GO
Tady je soubor výsledků.
GreatestVal
--------
7.0000
(1 rows affected)
B. Vraťte maximální hodnotu ze seznamu znakových konstant
Následující příklad vrací maximální hodnotu ze seznamu znakových konstant, které je uvedeno.
SELECT GREATEST('Glacier', N'Joshua Tree', 'Mount Rainier') AS GreatestString;
GO
Tady je soubor výsledků.
GreatestString
-------------
Mount Rainier
(1 rows affected)
C. Vraťte maximální hodnotu ze seznamu sloupcových argumentů
Tento příklad vrací maximální hodnotu ze seznamu sloupcových argumentů a při porovnání ignoruje hodnoty NULL . Tento vzorek využívá databázi AdventureWorksLT , kterou lze rychle nainstalovat jako ukázkovou databázi pro novou Azure SQL databázi. Další informace naleznete v ukázkových databázích 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;
Tady je soubor výsledků.
LatestDate vybere největší hodnotu data ze tří hodnot, přičemž ignoruje 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. Použití GREATEST s lokálními proměnnými
Tento příklad slouží GREATEST k určení maximální hodnoty seznamu lokálních proměnných v predikátu klauzule WHERE .
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
Tady je soubor výsledků. Zobrazují se pouze hodnoty větší než 0,7.
VarX Correlation
---------- -----------
Var2 .825
(1 rows affected)
E. Použití GREATEST se sloupci, konstantami a proměnnými
Tento příklad slouží GREATEST k určení maximální hodnoty smíšeného seznamu, který zahrnuje sloupce, konstanty a proměnné.
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
Tady je soubor výsledků.
VarX Correlation GreatestVar
---------- --------------------- ---------------------
Var1 0.200 0.590
Var2 0.825 0.825
Var3 0.610 0.610
(3 rows affected)