Consultes senzilles - Funcions de Tractament de NULLs
https://mariadb.com/kb/en/control-flow-functions/
Hi ha algunes funcions que permeten tractar amb valors NULs i retornar aquest o altres valors en lloc seu:
- IFNULL, NVL, NVL2, NULLIF, COALESCE
I una funció per a simular un switch:
- CASE, DECODE_ORACLE
IFNULL - NVL
Converteix un valor NULL en un valor conegut d'un tipus de dada fixe, ja sigui de data, caràcter o numèric.
La sintaxis és:
NVL(expressio_que_pot_ser_null, expressió_que_substitueix_el_valor_null)
Exemple IFNULL - NVL
Exemple IFNULL
SELECT LAST_NAME, IFNULL(COMMISSION_PCT, 0)
FROM employees
WHERE DEPARTMENT_ID IN(80,90);
+-----------+---------------------------+
| LAST_NAME | IFNULL(COMMISSION_PCT, 0) |
+-----------+---------------------------+
| King | 0.00 |
| Kochhar | 0.00 |
| De Haan | 0.00 |
| Zlotkey | 0.20 |
| Abel | 0.30 |
| Taylor | 0.20 |
+-----------+---------------------------+
NVL2
NVL2 avalua una expressió amb 3 valors. Si el primer és NO NULL mostra el segon, en cas contrari el tercer.
La sintaxis és:
NVL(expressio_que_pot_ser_null, expressió_en_cas_que_no_sigui_null, expressió_que_substitueix_el_valor_null)
Exemple NVL2
Exemple NVL2
SELECT LAST_NAME,
NVL2(COMMISSION_PCT, "NoNul", 'Nul') SN
FROM employees
WHERE DEPARTMENT_ID IN(80,90);
+-----------+-------+
| LAST_NAME | SN |
+-----------+-------+
| King | Nul |
| Kochhar | Nul |
| De Haan | Nul |
| Zlotkey | NoNul |
| Abel | NoNul |
| Taylor | NoNul |
+-----------+-------+