SQL Server IF…ELSE Příkaz podmínky: Příklad výběrového dotazu T-SQL
Proč potřebujete podmíněná prohlášení?
Podmíněné příkazy na serveru SQL vám pomohou definovat různé logiky a akce pro různé podmínky. Umožňuje vám provádět různé akce na základě podmínek definovaných v příkazu. V reálném životě provádíte mnoho akcí závislých na výsledku nějaké jiné činnosti nebo situace.
Některé příklady příkazů případu SQL v reálném čase:
- Pokud bude zítra pršet, naplánuji si výlet.
- Pokud jsou letenky z mého města méně než 400 USD, pak pojedu na dovolenou do Evropy, jinak dám přednost nějakému blízkému turistickému místu.
Zde můžete vidět, že jedna akce, jako je Road trip výše, je podmíněně závislý na výsledku jiné činnosti, která zní: „Zítra bude pršet nebo ne!“
Podobně, MS SQL také poskytuje schopnost provádět T-SQL příkazy podmíněně.
IF… Příkaz Else v SQL Server
In MS SQL, POKUD...JINDE je typ Podmíněné prohlášení.
Jakýkoli příkaz T-SQL lze provést podmíněně pomocí POKUD… JINAK.
Níže uvedený obrázek vysvětluje IF ELSE na serveru SQL:
- Pokud se stav vyhodnotí na Skutečný, poté příkazy T-SQL následované IF bude provedena podmínka na SQL serveru.
- Pokud se stav vyhodnotí na Falešné poté příkazy T-SQL následované ELSE klíčové slovo bude provedeno.
- Jakmile jsou provedeny buď příkazy IF T-SQL nebo ELSE T-SQL, pak ostatní nepodmíněné příkazy T-SQL pokračují v provádění.
IF… Else Syntaxe a pravidla v SQL
Syntaxe:
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
Pravidla:
- Podmínka by měla být Booleovský výraz, tj, výsledkem podmínky je při vyhodnocení logická hodnota.
- příkaz IF ELSE v SQL může podmíněně zpracovat jeden příkaz T-SQL nebo blok příkazů T-SQL.
- Blok příkazu by měl začínat klíčovým slovem BEGIN a končit klíčovým slovem END.
- Použití BEGIN a END pomáhá SQL serveru identifikovat blok příkazů, který je třeba provést, a oddělit jej od zbytku příkazů T-SQL, které nejsou součástí bloku IF…ELSE T-SQL.
- ELSE je nepovinné.
IF…ELSE s jedinou číselnou hodnotou v booleovském výrazu.
Stav: PRAVDA
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Stav: NEPRAVDA
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Předpoklad: Předpokládejme, že máte tabulku jako 'Guru99' se dvěma sloupci a čtyřmi řádky, jak je uvedeno níže:
Budeme používat 'Guru99' tabulka v dalších příkladech
IF…ELSE s proměnnou v booleovském výrazu.
Stav: PRAVDA
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Stav: NEPRAVDA
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
IF…ELSE s Begin End
Stav: PRAVDA
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Stav: NEPRAVDA
DECLARE @Course_ID INT = 2 IF (@Course_ID >=3) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Příkaz IF s No Else
V SQL můžete použít příkaz IF bez části ELSE. Pamatujte, že jsme uvedli, že část ELSE je volitelná. Například:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
Vytiskne následující:
Provedení nepravdivé podmínky neposkytne žádný výstup. Zvažte následující dotaz
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
Výsledek to
Vnořené příkazy IF…Else
Na rozdíl od jiných programovací jazyky, nemůžete přidat příkaz ELSE IF do podmínky IF ELSE v SQL. To je důvod, proč můžete vnořit IF ELSE do příkazů dotazu SQL. Je to ukázáno níže:
DECLARE @age INT; SET @age = 60; IF @age < 18 PRINT 'underage'; ELSE BEGIN IF @age < 50 PRINT 'You are below 50'; ELSE PRINT 'Senior'; END;
- V tomto příkladu kód vytiskne nezletilé, pokud je hodnota @věk nižší než 18.
- Pokud ne, bude provedena část ELSE. Část ElSE má vnořené IF…ELSE.
- Pokud je hodnota @věk nižší než 50, vypíše se Jste pod 50. Pokud není splněna žádná z těchto podmínek, kód vypíše Senior.
Shrnutí
- Proměnné jsou objekt, který funguje jako zástupný symbol.
- Blok příkazu by měl začínat klíčovým slovem BEGIN a končit klíčovým slovem END.
- Else je volitelný pro použití v příkazu IF… ELSE
- Je také možné vnořit podmínku SQL IF ELSE do jiného příkazu IF…ELSE.