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í pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Ukládá podmínky pro spuštění příkazu Transact-SQL. Příkaz Transact-SQL (sql_statement) za boolean_expression se provede, pokud se boolean_expression vyhodnotí jako TRUE. Volitelné ELSE klíčové slovo je alternativní příkaz Transact-SQL, který se spustí při boolean_expression vyhodnocení nebo FALSENULL.
Syntax
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
boolean_expression
Výraz, který vrací TRUE nebo FALSE. Pokud boolean_expression obsahuje SELECT příkaz, SELECT musí být příkaz uzavřen v závorkách.
{ sql_statement | statement_block }
Všechny platné příkazy Transact-SQL nebo seskupování příkazů definované pomocí bloku příkazu. K definování bloku příkazu (batch) použijte klíčová slova BEGIN jazyka control-of-flow a END. I když jsou všechny příkazy Transact-SQL platné v BEGIN...END rámci bloku, některé příkazy Transact-SQL by neměly být seskupené do stejné dávky (blok příkazu).
Návratové typy
Boolean
Examples
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
A. Použití logického výrazu
Následující příklad obsahuje logický výraz (1 = 1), který je pravdivý, a proto vytiskne první příkaz.
IF 1 = 1 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
Následující příklad obsahuje logický výraz (1 = 2), který je false, a proto vytiskne druhý příkaz.
IF 1 = 2 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
GO
B. Použití dotazu jako součásti logického výrazu
Následující příklad spustí dotaz jako součást logického výrazu. Vzhledem k tomu, že tabulka Product obsahuje 10 kol, které splňují podmínku WHERE v klauzuli, spustí se první příkaz print. Můžete změnit > 5 na > 15, abyste viděli, jak se druhá část příkazu může provést.
USE AdventureWorks2022;
GO
IF (SELECT COUNT(*)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
) > 5
PRINT 'There are more than 5 Touring-3000 bicycles.'
ELSE
PRINT 'There are 5 or less Touring-3000 bicycles.';
GO
C. Použití bloku příkazu
Následující příklad spustí dotaz jako součást logického výrazu a pak provede mírně odlišné bloky příkazů na základě výsledku logického výrazu. Každý blok příkazu začíná BEGIN a dokončí s END.
USE AdventureWorks2022;
GO
DECLARE @AvgWeight DECIMAL(8, 2),
@BikeCount INT
IF (
SELECT COUNT(*)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
) > 5
BEGIN
SET @BikeCount = (
SELECT COUNT(*)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
);
SET @AvgWeight = (
SELECT AVG(Weight)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
);
PRINT 'There are ' + CAST(@BikeCount AS VARCHAR(3)) + ' Touring-3000 bikes.'
PRINT 'The average weight of the top 5 Touring-3000 bikes is ' + CAST(@AvgWeight AS VARCHAR(8)) + '.';
END
ELSE
BEGIN
SET @AvgWeight = (
SELECT AVG(Weight)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
);
PRINT 'Average weight of the Touring-3000 bikes is ' + CAST(@AvgWeight AS VARCHAR(8)) + '.';
END;
GO
D. Použít vnořenou funkci KDYŽ... Příkazy ELSE
Následující příklad ukazuje, jak lze příkaz IF...ELSE vnořit do jiného. Nastavte proměnnou @Number na 5hodnotu , 50a 500pro otestování každého příkazu.
DECLARE @Number INT;
SET @Number = 50;
IF @Number > 100
PRINT 'The number is large.';
ELSE
BEGIN
IF @Number < 10
PRINT 'The number is small.';
ELSE
PRINT 'The number is medium.';
END;
GO
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
E: Použití dotazu jako součásti logického výrazu
Následující příklad používá IF...ELSE k určení, které ze dvou odpovědí má zobrazit uživatele na základě váhy položky v DimProduct tabulce v AdventureWorksDW2012 databázi.
DECLARE @maxWeight FLOAT, @productKey INT;
SET @maxWeight = 100.00;
SET @productKey = 424;
IF @maxWeight <= (
SELECT [Weight]
FROM DimProduct
WHERE ProductKey = @productKey;
)
BEGIN
SELECT @productKey,
EnglishDescription,
[Weight],
'This product is too heavy to ship and is only available for pickup.'
FROM DimProduct
WHERE ProductKey = @productKey;
END
ELSE
BEGIN
SELECT @productKey,
EnglishDescription,
[Weight],
'This product is available for shipping or pickup.'
FROM DimProduct
WHERE ProductKey = @productKey;
END
Související obsah
- ALTEROVÁ SPOUŠŤ (Transact-SQL)
- Jazyk řízení toku (Transact-SQL)
- VYTVOŘIT SPOUŠŤ (Transact-SQL)
- KDYŽ... DALŠÍ (Transact-SQL)