Salta el contingut

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.

NVL és un sinònim de IFNULL

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 |
+-----------+-------+