sql >> Databasteknik >  >> RDS >> MariaDB

Hur NVL() fungerar i MariaDB

Från MariaDB 10.3, NVL() kan användas som ett alias för IFNULL() fungera. Därför gör båda funktionerna det möjligt för oss att ersätta NULL-värden med ett annat värde.

Syntax

NVL(expr1,expr2)

Om expr1 är inte NULL , NVL() returnerar expr1 ; annars returnerar den expr2 .

Givet NVL() är ett alias för IFNULL() , kan vi också använda följande syntax:

IFNULL(expr1,expr2)

Båda ovanstående syntaxer ger samma resultat.

Exempel

Här är ett grundläggande exempel som använder NULL konstant:

SELECT NVL( null, 'No Value' );

Resultat:

No Value

I det här fallet använde jag NVL() för att ersätta NULL-värdet med No Value .

Här är vad som händer när det första argumentet inte är NULL :

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

Resultat:

Green

I det här fallet returneras det första argumentet, eftersom det inte är NULL .

Databasexempel

Anta att vi kör följande fråga:

SELECT * FROM Employees;

Resultat:

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

Vi kan se att två rader har NULL-värden i dept kolumn.

I följande fråga använder vi NVL() för att ersätta NULL-värdena med ett mer meningsfullt värde för läsaren:

SELECT
    empId,
    name,
    NVL( 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

Uttryck

Det aktuella värdet på det första argumentet utvärderas. Därför, om vi tillhandahåller ett uttryck som följande:

SELECT NVL( 4 * 10, 0 );

Vi får detta:

40

Så vi får inte 4 * 10 del. Vi får resultatet av det uttrycket (som i det här fallet är 40 ).

Detsamma gäller när resultatet av uttrycket är NULL :

SELECT NVL( 4 / 0, 0 );

Resultat:

0.0000

Detta är dock ett farligt exempel. Noll är ett värde. NULL är inte.

Att returnera noll när det finns ett NULL-värde kan vara missvisande eller till och med helt fel. Tänk om vi hade att göra med priser. Vi kan sluta med ett pris på noll, vilket kan vara felaktigt och kosta verksamheten mycket pengar.

I sådana fall är det vanligtvis bättre att använda ett mer meningsfullt värde som förmedlar till läsaren att det inte finns något värde.

Exempel:

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

Resultat:

No Value

IFNULL() Funktion

Som nämnts, NVL() är ett alias för IFNULL() . Därför kan vi ersätta NVL() med IFNULL() i något av exemplen ovan.

Exempel:

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

Resultat:

No Value

  1. Databasmodeller för e-handel Del 1:Nyhetsbrevet

  2. Konfigurera en lokal SQL Server-databas

  3. Hur man installerar Apache Cassandra på Ubuntu 20.10/Ubuntu 20.04

  4. Giltiga tidssträngsformat för SQLites datum/tidsfunktioner