- IF ELSE je podmienená funkcia v MySQL, ktorá vracia hodnoty na základe podmienok, užitočná v SELECT a výrazoch.
- Pre pokročilú logiku sa dá kombinovať s operátormi, agregáciami, poddotazmi, klauzulami CASE, IFNULL, REGEXP, DATE_FORMAT a GROUP BY/HAVING.
- Umožňuje klasifikovať dáta, spracovať hodnoty null a generovať dynamické správy pre každý záznam, ale nadmerné vnorenie môže ovplyvniť čitateľnosť a výkon.
V tomto článku vám ukážem, ako používať príkaz MySQL IF ELSE s príkladmi na zlepšenie vašich dotazov a získanie presnejších výsledkov. Pomocou týchto 18 praktických príkladov sa naučíme, ako používať tento výkonný nástroj a vyťažiť z databázy maximum. Preskúmame skutočné prípady, v ktorých použitie IF ELSE znamená rozdiel, od podmieneného výberu údajov až po vykonávanie zložitých operácií. si pripravený? No poďme tam! Pripravte sa na zvládnutie tejto techniky a posuňte svoje znalosti SQL na ďalšiu úroveň.
Čo je to príkaz IF ELSE v MySQL?
Predtým, ako sa ponoríme do príkladov, je dôležité pochopiť, čo je príkaz IF ELSE v MySQL. V podstate ide o podmienenú štruktúru, ktorá nám umožňuje vykonávať rôzne akcie v závislosti od toho, či je určitá podmienka splnená alebo nie. To znamená, že ak je podmienka pravdivá, vykoná sa jeden blok kódu a ak je nepravdivá, vykoná sa iný blok kódu.
Vyhlásenie MySQL IF ELSE s príkladmi
Tu je tabuľka s 18 príkladmi, ktoré uvidíme v tomto článku:
| Príklad | popis |
|---|---|
| 1 | Základné použitie IF ELSE |
| 2 | AK INE s viacerými podmienkami |
| 3 | Vnorené IF ELSE |
| 4 | IF ELSE s logickými operátormi |
| 5 | IF ELSE s agregačnými funkciami |
| 6 | IF ELSE s poddotazmi |
| 7 | IF ELSE s premennými |
| 8 | IF ELSE s CASE |
| 9 | IF ELSE s IFNULL |
| 10 | IF ELSE s NULLIF |
| 11 | IF ELSE s EXISTS |
| 12 | AK ELSE s IN |
| 13 | AK ELSE s MEDZI |
| 14 | AK INÉ s LIKE |
| 15 | AK INE s REGEXP |
| 16 | AK ELSE s DATE_FORMAT |
| 17 | IF ELSE s GROUP_CONCAT |
| 18 | IF ELSE s HAVING |
1. Základné použitie IF ELSE
Na začiatok sa pozrime na jednoduchý príklad. Predpokladajme, že máme tabuľku s názvom „produkty“ s nasledujúcimi poľami: id, názov, cena a sklad. Chceme získať názov produktu a správu o tom, či je alebo nie je na sklade. Môžeme to urobiť takto:
SELECT nombre, IF(stock > 0, 'Hay stock', 'No hay stock') AS stock FROM productos;
V tomto prípade je podmienkou stock > 0. Ak je splnená, zobrazí sa hlásenie 'Na sklade' a ak nie je splnená, zobrazí sa 'Vypredané'.
2. AK INE s viacerými podmienkami
Môžeme tiež použiť IF ELSE s viacerými podmienkami. Povedzme napríklad, že chceme získať názov produktu a správu o tom, či je cena vyššia ako 100, nižšia ako 50 alebo medzi 50 a 100. Môžeme to urobiť takto:
SELECT nombre,
IF(precio > 100, 'Caro',
IF(precio < 50, 'Barato', 'Precio medio')
) AS precio
FROM productos;
V tomto prípade používame vnorené príkazy IF ELSE na vyhodnotenie rôznych podmienok.
3. Vnorené IF ELSE
Ako sme videli v predchádzajúcom príklade, môžeme vnoriť viacero príkazov IF ELSE na vyhodnotenie rôznych podmienok. Pozrime sa na ďalší príklad. Predpokladajme, že chceme získať názov produktu a správu označujúcu, či je zásoba väčšia ako 100, menšia ako 10 alebo medzi 10 a 100. Ak je zásoba menšia ako 10, chceme tiež uviesť, či je 0 alebo nie. Môžeme to urobiť takto:
SELECT nombre,
IF(stock > 100, 'Stock alto',
IF(stock < 10,
IF(stock = 0, 'Sin stock', 'Stock bajo'),
'Stock medio'
)
) AS stock
FROM productos;
V tomto prípade používame tri úrovne hniezdenia na vyhodnotenie všetkých potrebných podmienok.
4. IF ELSE s logickými operátormi
Môžeme tiež kombinovať IF ELSE s logickými operátormi ako AND a OR. Povedzme napríklad, že chceme získať názov produktu a správu o tom, či je cena vyššia ako 100 a sklad je nižší ako 10. Môžeme to urobiť takto:
SELECT nombre, IF(precio > 100 AND stock < 10, 'Urgente reponer', 'OK') AS estado FROM productos;
V tomto prípade je podmienkou precio > 100 AND stock < 10. Ak sú splnené obe podmienky, zobrazí sa hlásenie 'Urgentné doplnenie' a ak nie sú splnené, zobrazí sa 'OK'.
5. IF ELSE s agregačnými funkciami
IF ELSE môžeme kombinovať s agregačnými funkciami ako SUM, AVG, MAX atď. Povedzme napríklad, že chceme získať celkové tržby a správu o tom, či sme prekročili cieľ 10000 XNUMX alebo nie. Môžeme to urobiť takto:
SELECT SUM(total) AS total_ventas, IF(SUM(total) > 10000, '¡Objetivo superado!', 'No se alcanzó el objetivo') AS mensaje FROM ventas;
V tomto prípade vypočítame celkový predaj pomocou SUM a potom pomocou IF ELSE zobrazíme správu podľa toho, či bol cieľ prekročený alebo nie.
6. IF ELSE s poddotazmi
Funkciu IF ELSE môžeme použiť aj s poddotazmi . Napríklad, predpokladajme, že chceme získať názvy produktov a správu, ktorá by informovala, či je ich cena vyššia ako priemerná cena všetkých produktov. Môžeme to urobiť takto:
SELECT nombre,
IF(precio > (SELECT AVG(precio) FROM productos),
'Precio superior a la media',
'Precio inferior o igual a la media'
) AS comparacion
FROM productos;
V tomto prípade použijeme poddotaz na výpočet priemernej ceny všetkých produktov a potom porovnáme každú jednotlivú cenu s touto hodnotou pomocou IF ELSE.
7. IF ELSE s premennými
Môžeme použiť IF ELSE spolu s premennými na ukladanie a používanie hodnôt v našich dotazoch. Predpokladajme napríklad, že chceme získať celkový predaj a správu o tom, či sme prekročili cieľ, ktorý sme uložili do premennej. Môžeme to urobiť takto:
SET @objetivo = 10000; SELECT SUM(total) AS total_ventas, IF(SUM(total) > @objetivo, '¡Objetivo superado!', 'No se alcanzó el objetivo') AS mensaje FROM ventas;
V tomto prípade najprv definujeme premennú @objetivo s hodnotou 10000 a potom ju použijeme v podmienke IF ELSE.
8. AK INE s CASE
Ďalším spôsobom použitia príkazu IF ELSE je jeho kombinácia s príkazom CASE . Predpokladajme napríklad, že chceme získať názov produktu a cenovú klasifikáciu „Lacný“, „Stredný“ alebo „Drahý“ na základe určitých rozsahov. Môžeme to urobiť takto:
SELECT nombre,
CASE
WHEN precio < 50 THEN 'Barato'
WHEN precio BETWEEN 50 AND 100 THEN 'Medio'
ELSE 'Caro'
END AS clasificacion
FROM productos;
V tomto prípade používame CASE na vyhodnotenie rôznych podmienok a priradenie hodnoty na základe výsledku. Je to alternatívny spôsob, ako urobiť to isté ako s vnorenými príkazmi IF ELSE.
9. IF ELSE s IFNULL
Funkcia IFNULL nám umožňuje spracovávať nulové hodnoty v našich dotazoch. Môžeme ho skombinovať s IF ELSE, aby sme priradili predvolenú hodnotu, keď narazíme na nulovú hodnotu. Predpokladajme napríklad, že chceme získať názov produktu a jeho cenu, ale ak je cena nulová, chceme zobraziť správu „Dopyt“. Môžeme to urobiť takto:
SELECT nombre, IFNULL(precio, 'Consultar') AS precio FROM productos;
V tomto prípade používame IFNULL na vyhodnotenie, či je cena nulová, a ak áno, namiesto nulovej hodnoty zobrazíme správu „Dopyt“.
10. IF ELSE s NULLIF
Funkcia NULLIF je podobná funkcii IFNULL, ale namiesto spracovania hodnôt null nám umožňuje porovnať dve hodnoty a vrátiť hodnotu NULL, ak sú rovnaké. Môžeme ho skombinovať s IF ELSE, aby sme pri splnení určitej podmienky priradili alternatívnu hodnotu. Predpokladajme napríklad, že chceme získať názov produktu a jeho cenu, ale ak je cena 0, chceme zobraziť správu „Zadarmo“. Môžeme to urobiť takto:
SELECT nombre, IF(NULLIF(precio, 0) IS NULL, 'Gratis', precio) AS precio FROM productos;
V tomto prípade použijeme NULLIF na porovnanie ceny s 0 a vrátime NULL, ak sú rovnaké. Potom pomocou IF ELSE vyhodnotíme, či je výsledok NULLIF NULL, a ak áno, namiesto ceny zobrazíme správu „Zadarmo“.
11. AK INÉ s EXISTUJE
Klauzula EXISTS nám umožňuje skontrolovať, či existuje nejaký záznam, ktorý spĺňa určitú podmienku v poddotaze. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať mená zákazníkov a správu o tom, či zadali objednávku alebo nie. Môžeme to urobiť takto:
SELECT nombre,
IF(EXISTS(SELECT * FROM pedidos WHERE cliente_id = clientes.id),
'Con pedidos',
'Sin pedidos'
) AS estado
FROM clientes;
V tomto prípade používame EXISTS s poddotazom na kontrolu, či pre každého zákazníka existujú nejaké objednávky. Potom použijeme IF ELSE na zobrazenie správy na základe výsledku.
12. AK INE s IN
Operátor IN nám umožňuje skontrolovať, či je hodnota v zozname hodnôt. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať názov produktov a správu o tom, či patria do kategórie „Elektronika“ alebo „Domov“. Môžeme to urobiť takto:
SELECT nombre,
IF(categoria IN ('Electrónica', 'Hogar'),
'Producto destacado',
'Producto regular'
) AS tipo
FROM productos;
V tomto prípade používame IN na kontrolu, či je kategória produktov uvedená v časti „Elektronika“ alebo „Domov“. Potom použijeme IF ELSE na zobrazenie správy na základe výsledku.
13. AK ELSE s MEDZI
Operátor BETWEEN nám umožňuje skontrolovať, či je hodnota v rozsahu hodnôt. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať názov produktov a správu o tom, či je ich cena medzi 50 a 100. Môžeme to urobiť takto:
SELECT nombre,
IF(precio BETWEEN 50 AND 100,
'Precio en rango',
'Precio fuera de rango'
) AS rango
FROM productos;
V tomto prípade pomocou BETWEEN skontrolujeme, či je cena produktu medzi 50 a 100. Potom pomocou IF ELSE zobrazíme správu na základe výsledku.
14. AK INÉ s LIKE
Operátor LIKE nám umožňuje vyhľadávať vzory v textových reťazcoch. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať názov produktov a správu o tom, či ich názov obsahuje slovo „iPhone“. Môžeme to urobiť takto:
SELECT nombre,
IF(nombre LIKE '%iPhone%',
'Producto de Apple',
'Otro producto'
) AS tipo
FROM productos;
V tomto prípade používame LIKE na kontrolu, či názov produktu obsahuje slovo 'iPhone'. Potom použijeme IF ELSE na zobrazenie správy na základe výsledku.
15. AK INE s REGEXP
Operátor REGEXP nám umožňuje vyhľadávať zložitejšie vzory v textových reťazcoch pomocou regulárnych výrazov . Môžeme ho kombinovať s operátorom IF ELSE a robiť rozhodnutia na základe výsledku. Predpokladajme napríklad, že chceme získať mená zákazníkov a správu s informáciou, či je ich e-mailová adresa platná alebo nie. Môžeme to urobiť takto:
SELECT nombre,
IF(email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z]{2,}$',
'Email válido',
'Email inválido'
) AS validacion
FROM clientes;
V tomto prípade používame REGEXP s regulárnym výrazom na kontrolu, či email zákazníka spĺňa platný formát. Potom použijeme IF ELSE na zobrazenie správy na základe výsledku.
16. AK ELSE s DATE_FORMAT
Funkcia DATE_FORMAT nám umožňuje formátovať dátumy v našich dopytoch. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať názov objednávok a správu o tom, či boli zadané cez víkend alebo nie. Môžeme to urobiť takto:
SELECT id,
IF(DATE_FORMAT(fecha, '%w') IN (0, 6),
'Fin de semana',
'Día de semana'
) AS dia
FROM pedidos;
V tomto prípade používame DATE_FORMAT na získanie dňa v týždni od dátumu objednávky (0 pre nedeľu, 6 pre sobotu). Potom pomocou IF ELSE s IN skontrolujeme, či je deň 0 alebo 6, a na základe výsledku zobrazíme správu.
17. AK ELSE s GROUP_CONCAT
Funkcia GROUP_CONCAT nám umožňuje zreťaziť hodnoty z viacerých riadkov do jedného reťazca. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať meno zákazníka a správu o tom, či si zakúpil „iPhone“ alebo „Samsung“. Môžeme to urobiť takto:
SELECT c.nombre,
IF(GROUP_CONCAT(p.nombre) LIKE '%iPhone%',
'Compró iPhone',
IF(GROUP_CONCAT(p.nombre) LIKE '%Samsung%',
'Compró Samsung',
'No compró iPhone ni Samsung'
)
) AS mensaje
FROM clientes c
JOIN pedidos pe ON c.id = pe.cliente_id
JOIN productos p ON pe.producto_id = p.id
GROUP BY c.id;
V tomto prípade používame GROUP_CONCAT na zreťazenie názvov produktov zakúpených každým zákazníkom. Potom pomocou IF ELSE s LIKE skontrolujeme, či výsledný reťazec obsahuje „iPhone“ alebo „Samsung“ a na základe výsledku zobrazíme správu.
18. AK INÉ s MAJÚC
Klauzula HAVING nám umožňuje filtrovať výsledky dotazu GROUP BY na základe určitých podmienok. Môžeme ju kombinovať s IF ELSE a robiť rozhodnutia na základe výsledku. Predpokladajme napríklad, že chceme získať počet objednávok na zákazníka a správu s informáciou, či ide o „VIP zákazníka“ (viac ako 10 objednávok) alebo „pravidelného zákazníka“. Môžeme to urobiť takto:
SELECT c.nombre, COUNT(p.id) AS total_pedidos,
IF(COUNT(p.id) > 10,
'Cliente VIP',
'Cliente regular'
) AS tipo_cliente
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id
GROUP BY c.id
HAVING COUNT(p.id) > 5;
V tomto prípade používame GROUP BY na zoskupenie objednávok podľa zákazníka a spočítanie počtu objednávok pre každú s COUNT. Potom pomocou HAVING odfiltrujeme len zákazníkov s viac ako 5 objednávkami. Nakoniec používame IF ELSE na zobrazenie správy na základe toho, či je celkový počet objednávok väčší ako 10 alebo nie.
Časté otázky o IF ELSE MySQL s príkladmi
1. Čo je to príkaz IF ELSE v MySQL?
Príkaz IF ELSE v MySQL je podmienená štruktúra , ktorá nám umožňuje vykonávať rôzne akcie v závislosti od toho, či je splnená určitá podmienka alebo nie.
2. Ako použiť príkaz IF ELSE v MySQL?
Základná syntax príkazu IF ELSE v MySQL je nasledovná:
IF(condición, valor_si_verdadero, valor_si_falso)
3. Môže byť v MySQL vnorených viacero príkazov IF ELSE?
Áno, môžete vnoriť viacero príkazov IF ELSE na vyhodnotenie rôznych podmienok a rozhodovanie na základe výsledkov.
4. Dá sa IF ELSE kombinovať s inými funkciami a klauzulami MySQL?
Áno, IF ELSE je možné kombinovať s mnohými ďalšími funkciami a klauzulami MySQL, ako sú agregačné funkcie, poddotazy, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT, HAVING a ďalšie.
5. Aký je rozdiel medzi IF ELSE a CASE v MySQL?
IF ELSE aj CASE nám umožňujú vykonávať rôzne akcie na základe určitých podmienok. Hlavný rozdiel je v tom, že IF ELSE sa používa na vyhodnotenie jednej podmienky a vykonanie akcie, ak je splnená alebo nie, zatiaľ čo CASE sa používa na vyhodnotenie viacerých podmienok a vykonanie rôznych akcií na základe výsledku.
6. Existujú nejaké obmedzenia pri používaní IF ELSE v MySQL?
Neexistujú žiadne významné obmedzenia používania IF ELSE v MySQL, okrem obmedzení logiky a syntaxe hodnotených podmienok. Je však dôležité poznamenať, že nadmerné alebo nesprávne používanie IF ELSE môže ovplyvniť výkon dotazu a sťažiť čítanie a údržbu kódu.
Záver IF ELSE MySQL s príkladmi
V tomto článku sme sa dozvedeli, čo je príkaz IF ELSE v MySQL a ako sa používa na vykonávanie rôznych akcií na základe určitých podmienok. Videli sme 18 praktických príkladov použitia príkazu IF ELSE, jeho kombinácie s inými funkciami a klauzulami MySQL, ako sú agregačné funkcie, poddotazy, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT a HAVING.
Dúfam, že tieto príklady boli užitočné a že vám pomôžu lepšie pochopiť, ako používať IF ELSE vo vašich MySQL dotazoch . A nezabudnite zdieľať tento článok so svojimi priateľmi a kolegami, ak vás zaujal!