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:

Jak funguje If a Else
Jak když a jinak funguje
  • 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'

IF…ELSE s jedinou číselnou hodnotou v booleovském výrazu

Stav: NEPRAVDA

IF (1=2)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

IF…ELSE s jedinou číselnou hodnotou v booleovském výrazu

Předpoklad: Předpokládejme, že máte tabulku jako 'Guru99' se dvěma sloupci a čtyřmi řádky, jak je uvedeno níže:

IF…ELSE s jedinou číselnou hodnotou v booleovském výrazu

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

IF...ELSE s proměnnou v booleovském výrazu

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 proměnnou v booleovském výrazu

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

IF...ELSE s Begin 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

IF...ELSE s Begin 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í:

Příkaz IF s No Else

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

Příkaz IF s No Else

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.

Vnořené příkazy IF…Else

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.