sql >> Database teknologi >  >> RDS >> Oracle

Oracle ISNULL() Tilsvarende

De fleste større DBMS'er giver os en funktion til at erstatte nulværdier med en anden værdi.

Men navnet på funktionen har en tendens til at variere på tværs af DBMS'er. For eksempel har SQL Server en ISNULL() funktion, mens andre (såsom MySQL, MariaDB og SQLite) har en IFNULL() funktion til at gøre det samme.

Men for at forvirre sagerne har MySQL og MariaDB hver en ISNULL() funktion, der fungerer anderledes end SQL Servers funktion af samme navn (MySQL og MariaDBs implementering accepterer kun et enkelt argument og returnerer 1 hvis den er null og 0 hvis det ikke er).

I hvert fald, i tilfælde af Oracle Database, kan vi bruge NVL() funktion til at erstatte null-værdier med en anden værdi.

Faktisk har Oracle Database også en NVL2() funktion, der giver os mulighed for at angive en anden værdi til brug i tilfælde af, at det første argument ikke er null .

Hvis vi blot vil teste om en værdi er null eller ej, kan vi bruge IS NULL betingelse (eller IS NOT NULL for den modsatte test).

NVL() Funktion

Her er et eksempel, der viser, hvordan NVL() funktion virker:

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

Resultat:

Run

I det tilfælde var det første argument null og så det andet argument blev returneret.

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

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

Resultat:

Walk

Det første argument returneres.

NVL2() Funktion

Som nævnt giver Oracle Database os også NVL2() fungere. Denne funktion giver os mulighed for at angive en anden værdi til brug i tilfælde af, at det første argument ikke er null .

Her er et eksempel på, hvordan det virker:

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

Resultat:

3

Det første argument var null og så det tredje argument blev returneret.

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

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

Resultat:

2

Det andet argument returneres.

ER NULL og ER IKKE NULL Betingelser

Hvis vi bare vil finde ud af, om en værdi er null , kan vi bruge IS NULL sammenligningstilstand. Vi kan alternativt bruge IS NOT NULL for at kontrollere, om den ikke er null .

Antag, at vi har følgende tabel:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Resultat:

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

I dette tilfælde er PRICE kolonne indeholder en nulværdi for den første række, men ikke for den anden række.

Her er et eksempel på brug af IS NULL mod det bord:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Resultat:

ID OE# PRIS MODEL
2 62150B3278 CAMRY

Kun rækken med nulprisen returneres.

Her er, hvad der sker, når vi bruger IS NOT NULL :

SELECT * FROM Autoparts
WHERE Price IS NOT NULL;

Resultat:

ID OE# PRIS MODEL
1 62150A3278 168 HILUX

Den anden række returneres.


  1. SQL CREATE TABLE … SOM SELECT-sætning

  2. .NET 4:Sådan konfigureres EDMX-fil i anden samling i Web.Config

  3. Forstå indekser i MySQL:Anden del

  4. Sådan sammenkædes flere rækker i én kolonne i MySQL