sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan IFNULL() virker i MariaDB

I MariaDB er IFNULL() funktion giver os mulighed for at erstatte NULL-værdier med en anden værdi.

Syntaks

IFNULL(expr1,expr2)

Hvis expr1 er ikke NULL , IFNULL() returnerer expr1 ; ellers returnerer den expr2 .

Også fra MariaDB 10.3, NVL() kan bruges som et alias for IFNULL() fungere. Derfor har vi mulighed for i stedet at bruge følgende syntaks:

NVL(expr1,expr2)

Resultatet er det samme, uanset hvilken syntaks der bruges.

Eksempel

Her er et grundlæggende eksempel, der bruger NULL konstant:

SELECT IFNULL( null, 'No Value' );

Resultat:

No Value

I dette tilfælde brugte jeg IFNULL() for at erstatte NULL-værdien med No Value .

Her er, hvad der sker, når det første argument ikke er NULL :

SELECT IFNULL( 'Spicy', 'No Value' );

Resultat:

Spicy

I dette tilfælde returneres det første argument, fordi det ikke er NULL .

Databaseeksempel

Antag, at vi kører følgende forespørgsel:

SELECT * FROM Employees;

Resultat:

empId	name	dept
-----   -----   -----
1	Jess	Sales
2	Rohit	NULL
3	Zohan	Sales
4	Homer	NULL

Vi kan se, at to rækker har NULL-værdier i dept kolonne.

I den følgende forespørgsel bruger vi IFNULL() for at erstatte NULL-værdierne med en mere meningsfuld værdi for læseren:

SELECT
    empId,
    name,
    IFNULL( dept, 'Not yet assigned' ) AS dept
FROM Employees;

Resultat:

empId	name	dept
-----   -----   ----------------
1	Jess	Sales
2	Rohit	Not yet assigned
3	Zohan	Sales
4	Homer	Not yet assigned

Udtryk

Den aktuelle værdi af det første argument evalueres. Derfor, hvis vi giver et udtryk som følgende:

SELECT IFNULL( 3 * 7, 0 );

Vi får dette:

21

Så vi får ikke 3 * 7 en del. Vi får resultatet af det udtryk (som i dette tilfælde er 21 ).

Det samme gælder, når resultatet af udtrykket er NULL . For eksempel, hvis vi kører følgende kode:

SELECT IFNULL( 3 / 0, 0 );

Vi får dette:

0.0000

Dette er dog et farligt eksempel. Nul er en værdi. NULL er ikke.

At returnere nul, når der er en NULL-værdi, kan være vildledende eller endda helt forkert. Tænk, hvis vi havde med priser at gøre. Vi kan ende med en pris på nul, hvilket kan være forkert og koste forretningen mange penge.

Derfor er det i sådanne tilfælde normalt bedre at bruge en mere meningsfuld værdi, der formidler til læseren, at der ikke er nogen værdi.

Eksempel:

SELECT IFNULL( 3 / 0, 'No value' );

Resultat:

No Value

NVL() Funktion

Startende med MariaDB 10.3, NVL() er et alias for IFNULL() . Derfor kan vi erstatte IFNULL() med NVL() i et af ovenstående eksempler.

Eksempel:

SELECT NVL( 3 / 0, 'No value' );

Resultat:

No Value

  1. Hvordan skriver man parametriseret orakelindsæt-forespørgsel?

  2. Aggregerende (x,y) koordinatpunktskyer i PostgreSQL

  3. Sådan viser du samlingen af ​​din forbindelse i MySQL

  4. Indsæt flere rækker UDEN at gentage INSERT INTO ...-delen af ​​sætningen?