Les expressions condicionals en SQL permeten executar diferents accions basades en certes condicions. Aquestes expressions són molt útils per a la manipulació de dades i la creació de consultes dinàmiques. En aquest tema, explorarem les expressions condicionals més comunes en SQL: CASE, IF, IFNULL, i COALESCE.

  1. L'expressió CASE

L'expressió CASE és una estructura condicional que permet retornar valors diferents basats en condicions específiques.

Sintaxi

CASE
    WHEN condició1 THEN resultat1
    WHEN condició2 THEN resultat2
    ...
    ELSE resultat_final
END

Exemple

Suposem que tenim una taula empleats amb les següents dades:

id nom salari
1 Anna 50000
2 Joan 60000
3 Maria 70000
4 Pere 80000

Volem crear una consulta que classifiqui els empleats en tres categories de salari: 'Baix', 'Mitjà' i 'Alt'.

SELECT nom,
       salari,
       CASE
           WHEN salari < 60000 THEN 'Baix'
           WHEN salari BETWEEN 60000 AND 70000 THEN 'Mitjà'
           ELSE 'Alt'
       END AS categoria_salari
FROM empleats;

Resultat

nom salari categoria_salari
Anna 50000 Baix
Joan 60000 Mitjà
Maria 70000 Mitjà
Pere 80000 Alt

  1. L'expressió IF

L'expressió IF és una altra manera de crear condicions en SQL, però és més comuna en sistemes de bases de dades com MySQL.

Sintaxi

IF(condició, valor_si_cert, valor_si_fals)

Exemple

Utilitzant la mateixa taula empleats, podem classificar els empleats en 'Alt' o 'Baix' segons si el seu salari és superior a 65000.

SELECT nom,
       salari,
       IF(salari > 65000, 'Alt', 'Baix') AS categoria_salari
FROM empleats;

Resultat

nom salari categoria_salari
Anna 50000 Baix
Joan 60000 Baix
Maria 70000 Alt
Pere 80000 Alt

  1. L'expressió IFNULL

L'expressió IFNULL s'utilitza per substituir valors NULL per un valor específic.

Sintaxi

IFNULL(expressió, valor_substitut)

Exemple

Suposem que tenim una taula productes amb les següents dades:

id nom preu
1 Producte1 100
2 Producte2 NULL
3 Producte3 200

Volem substituir els valors NULL en la columna preu per 0.

SELECT nom,
       IFNULL(preu, 0) AS preu
FROM productes;

Resultat

nom preu
Producte1 100
Producte2 0
Producte3 200

  1. L'expressió COALESCE

L'expressió COALESCE retorna el primer valor no NULL d'una llista d'expressions.

Sintaxi

COALESCE(expressió1, expressió2, ..., expressióN)

Exemple

Utilitzant la mateixa taula productes, podem utilitzar COALESCE per substituir els valors NULL en la columna preu per 0.

SELECT nom,
       COALESCE(preu, 0) AS preu
FROM productes;

Resultat

nom preu
Producte1 100
Producte2 0
Producte3 200

Exercicis pràctics

Exercici 1

Utilitzant la taula empleats, crea una consulta que classifiqui els empleats en tres categories de salari: 'Baix', 'Mitjà' i 'Alt' utilitzant l'expressió CASE.

Solució

SELECT nom,
       salari,
       CASE
           WHEN salari < 60000 THEN 'Baix'
           WHEN salari BETWEEN 60000 AND 70000 THEN 'Mitjà'
           ELSE 'Alt'
       END AS categoria_salari
FROM empleats;

Exercici 2

Utilitzant la taula productes, crea una consulta que substitueixi els valors NULL en la columna preu per 0 utilitzant l'expressió IFNULL.

Solució

SELECT nom,
       IFNULL(preu, 0) AS preu
FROM productes;

Exercici 3

Utilitzant la taula productes, crea una consulta que substitueixi els valors NULL en la columna preu per 0 utilitzant l'expressió COALESCE.

Solució

SELECT nom,
       COALESCE(preu, 0) AS preu
FROM productes;

Conclusió

Les expressions condicionals en SQL són eines poderoses que permeten crear consultes dinàmiques i flexibles. Hem explorat les expressions CASE, IF, IFNULL, i COALESCE, i hem vist com utilitzar-les per manipular i analitzar dades de manera efectiva. Amb la pràctica, aquestes expressions es convertiran en una part essencial del teu arsenal de SQL.

Curs de SQL

Mòdul 1: Introducció a SQL

Mòdul 2: Consultes bàsiques de SQL

Mòdul 3: Treballar amb múltiples taules

Mòdul 4: Filtratge avançat de dades

Mòdul 5: Manipulació de dades

Mòdul 6: Funcions avançades de SQL

Mòdul 7: Subconsultes i consultes niades

Mòdul 8: Índexs i optimització del rendiment

Mòdul 9: Transaccions i concurrència

Mòdul 10: Temes avançats

Mòdul 11: SQL en la pràctica

Mòdul 12: Projecte final

© Copyright 2024. Tots els drets reservats