sql >> Databasteknik >  >> RDS >> Oracle

Oracle ISNULL() Motsvarighet

De flesta större DBMS ger oss en funktion för att ersätta nollvärden med ett annat värde.

Men namnet på funktionen tenderar att skilja sig åt mellan DBMS:er. Till exempel har SQL Server en ISNULL() funktion, medan andra (som MySQL, MariaDB och SQLite) har en IFNULL() funktion för att göra samma sak.

Men för att förvirra saken har MySQL och MariaDB var och en en ISNULL() funktion som fungerar annorlunda än SQL Servers funktion med samma namn (MySQL och MariaDB:s implementering accepterar bara ett enda argument och returnerar 1 om den är null och 0 om det inte är det).

Hur som helst, i fallet med Oracle Database kan vi använda NVL() funktion för att ersätta nollvärden med ett annat värde.

Oracle Database har faktiskt också en NVL2() funktion som tillåter oss att tillhandahålla ett annat värde att använda i händelse av att det första argumentet inte är null .

Om vi ​​bara vill testa om ett värde är null eller inte kan vi använda IS NULL villkoret (eller IS NOT NULL för det motsatta testet).

NVL() Funktion

Här är ett exempel som visar hur NVL() funktionen fungerar:

SELECT NVL(null, 'Run')
FROM DUAL;

Resultat:

Run

I så fall var det första argumentet null och så det andra argumentet returnerades.

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

SELECT NVL('Walk', 'Run')
FROM DUAL;

Resultat:

Walk

Det första argumentet returneras.

NVL2() Funktion

Som nämnts ger Oracle Database oss också NVL2() fungera. Denna funktion tillåter oss att tillhandahålla ett annat värde att använda i händelse av att det första argumentet inte är null .

Här är ett exempel på hur det fungerar:

SELECT NVL2(null, 2, 3)
FROM DUAL;

Resultat:

3

Det första argumentet var null och så det tredje argumentet returnerades.

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

SELECT NVL2(1, 2, 3)
FROM DUAL;

Resultat:

2

Det andra argumentet returneras.

ÄR NULL och ÄR INTE NULL Villkor

Om vi ​​bara vill ta reda på om ett värde är null , kan vi använda IS NULL jämförelsevillkor. Vi kan alternativt använda IS NOT NULL för att kontrollera om det inte är null .

Anta att vi har följande tabell:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Resultat:

ID OE# PRIS MODEL
2 62150B3278 CAMRY
1 62150A3278 168 HILUX

I det här fallet, PRICE kolumnen innehåller ett nullvärde för den första raden, men inte för den andra raden.

Här är ett exempel på hur du använder IS NULL mot den tabellen:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Resultat:

ID OE# PRIS MODEL
2 62150B3278 CAMRY

Endast raden med nollpriset returneras.

Här är vad som händer när vi använder IS NOT NULL :

SELECT * FROM Autoparts
WHERE Price IS NOT NULL;

Resultat:

ID OE# PRIS MODEL
1 62150A3278 168 HILUX

Den andra raden returneras.


  1. oracle systimestamp (sysdate) till millisekunder

  2. Problemet med fönsterfunktioner och vyer

  3. Postgres:vakuumkommandot rensar inte upp döda tuplar

  4. Hur kan jag få en vanlig postgres-databasdump på heroku?