sql >> Databáze >  >> RDS >> Oracle

Ekvivalent Oracle ISNULL().

Většina hlavních DBMS nám poskytuje funkci pro nahrazení hodnot null jinou hodnotou.

Ale název funkce má tendenci se lišit v různých DBMS. Například SQL Server má ISNULL() funkce, zatímco jiné (jako MySQL, MariaDB a SQLite) mají IFNULL() funkce pro totéž.

Abychom to však zamotali, MySQL a MariaDB mají každý ISNULL() funkce, která funguje odlišně od funkce SQL Serveru se stejným názvem (implementace MySQL a MariaDB přijímá pouze jeden argument a vrací 1 pokud je jeho null a 0 pokud tomu tak není).

Každopádně v případě Oracle Database můžeme použít NVL() funkce k nahrazení hodnot null jinou hodnotou.

Oracle Database má ve skutečnosti také NVL2() funkce, která nám umožňuje poskytnout jinou hodnotu, kterou použijeme v případě, že první argument není null .

Pokud chceme jednoduše otestovat, zda je hodnota null nebo ne, můžeme použít IS NULL podmínka (nebo IS NOT NULL pro opačný test).

NVL() Funkce

Zde je příklad, který ukazuje, jak NVL() funkce funguje:

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

Výsledek:

Run

V tomto případě byl první argument null a tak byl vrácen druhý argument.

Co se stane, když první argument není null :

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

Výsledek:

Walk

Je vrácen první argument.

NVL2() Funkce

Jak již bylo zmíněno, Oracle Database nám také poskytuje NVL2() funkce. Tato funkce nám umožňuje poskytnout jinou hodnotu, která se použije v případě, že první argument není null .

Zde je příklad, jak to funguje:

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

Výsledek:

3

První argument byl null a tak byl vrácen třetí argument.

Co se stane, když první argument není null :

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

Výsledek:

2

Je vrácen druhý argument.

Položka IS NULL a IS NOT NULL Podmínky

Chceme-li pouze zjistit, zda je hodnota null nebo ne , můžeme použít IS NULL srovnávací podmínka. Alternativně můžeme použít IS NOT NULL zkontrolujte, zda není null .

Předpokládejme, že máme následující tabulku:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Výsledek:

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

V tomto případě PRICE obsahuje nulovou hodnotu pro první řádek, ale nikoli pro druhý řádek.

Zde je příklad použití IS NULL proti této tabulce:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Výsledek:

ID OE# PRICE MODEL
2 62150B3278 CAMRY

Vrátí se pouze řádek s nulovou cenou.

Zde je to, co se stane, když použijeme IS NOT NULL :

SELECT * FROM Autoparts
WHERE Price IS NOT NULL;

Výsledek:

ID OE# PRICE MODEL
1 62150A3278 168 HILUX

Vrátí se druhý řádek.


  1. Jak mohu načíst seznam parametrů z uložené procedury na serveru SQL Server

  2. Nelze předat hodnotu řetězce 1,2 jako vstup do dotazu Oracle

  3. SQL Levé připojení

  4. Ladění výkonu celého plánu dotazů