logo

SQL Server ISNULL függvény

Ez az SQL Server beépített funkciója. Lehetővé teszi a felhasználó számára cserélje ki a NULL értékeket adott helyettesítési értékkel. Ez a cikk teljes áttekintést nyújt az ISNULL függvényről, amely alternatív értéket ad vissza, ha a kifejezés vagy a táblarekordok NULL értékkel rendelkeznek.

Szintaxis

A következő szintaxis az ISNULL függvényt illusztrálja:

 ISNULL ( Expression, Replacement ) 

Amint látjuk, ez a szintaxis csak két argumentumot fogad el:

    Kifejezés: A NULL ellenőrzésére szolgál. Bármilyen típusú lehet.Csere: Ez az az érték, amely akkor kerül visszaadásra, ha a kifejezés NULL. Ennek implicit módon konvertálhatónak kell lennie a kifejezéstípus értékévé.

Ha a kifejezés értéke NULL, akkor ez a függvény a NULL értéket lecseréli a helyettesítő értékre. Amikor az érv az adattípusok eltérőek , az SQL szerver implicit módon átalakítja a helyettesítési érték adattípusát kifejezés adattípusává mielőtt visszaad egy értéket. A kifejezés értékét akkor kapjuk meg, ha a kifejezés nem NULL.

Az ISNULL függvény az SQL Serverben (2008-tól kezdve), a párhuzamos adattárházban, az Azure SQL Database-ben és az Azure SQL Data Warehouse-ban működhet.

fcfs

ISNULL függvény példa

Nézzük meg az ISNULL függvényt néhány példával az SQL Serverben.

1. ISNULL függvény a számértékkel

Az alábbi példa az ISNULL függvényt használja. Itt az első argumentum NULL; ezért az eredményben egy második argumentum értékét adja vissza:

 SELECT ISNULL(NULL, 25) AS Result; 

A végrehajtás után az alábbi kimenetet kapjuk:

SQL Server ISNULL függvény

2. ISNULL függvény karakterlánc adatokkal

Az alábbi példa az ISNULL függvényt használja. Itt kapjuk meg a karakterlánc értékét 'Helló' mert ez az első érv. Az ISNULL() függvény meghatározásakor az első argumentumértéket adja vissza, ha az NEM NULL:

 SELECT ISNULL('Hello', 'Javatpoint') AS Result; 

A végrehajtás után az alábbi kimenetet kapjuk:

SQL Server ISNULL függvény

3. ISNULL függvény változókkal

Az alábbi példa az ISNULL függvényt használja, és az eredményt egy változó használatával adja vissza:

 DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result; 

A végrehajtás után az alábbi kimenetet kapjuk:

SQL Server ISNULL függvény

4. ISNULL függvény a táblán

Itt látni fogjuk, hogyan cserélhetünk le egy oszlopértéket értelmes értékre, ha az null értékeket tartalmaz. Először hozzunk létre egy táblát Munkavállaló' az alábbi állítás segítségével:

 CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL ); 

Most beszúrunk néhány értéket ebbe a táblázatba az alábbi utasítással:

igazítsa a képet a css-hez
 INSERT INTO Employee (Emp_Name, Age, Salary) VALUES ('Kevin Huges', 28, 45000), ('Rose Bennet', NULL, 36000), ('Peter Butler', 25, NULL); 

Ha ellenőrizzük a táblázatot, ezt láthatjuk a 2. és a 3. alkalmazott NULL érték.

SQL Server ISNULL függvény

Tegyük fel, hogy le akarjuk cserélni ezen oszlopok NULL értékeit anélkül, hogy véglegesen frissítenénk őket a táblázatban. Ebben az esetben az ISNULL függvénnyel lecserélhetjük a NULL értékeket az adott értékre.

Például , szeretnénk visszaadni a kor és fizetés a munkavállaló 22-vel, illetve 25000-rel, ha oszlopaik NULL értéket tartalmaznak az Employee táblában. Ezt a következő állítás segítségével tehetjük meg:

 SELECT ID, Emp_Name, ISNULL(Age, 22) AS Age, ISNULL(Salary, 25000) AS Salary FROM Employee; 

A végrehajtás után az alábbi kimenetet kapjuk:

SQL Server ISNULL függvény

Ha a lekérdezést az ISNULL függvénnyel futtatjuk arra az oszlopra, ahol a táblázatban egyetlen oszlop sem tartalmaz NULL értéket, akkor ez a lekérdezés a sorok tényleges értékeit adja vissza.

Például , frissítettük a fizetés annak a munkavállalónak, akinek ID=2 alábbiak szerint:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Ismétlem, ha végrehajtjuk az ISNULL függvényt, az nem változtatja meg a fizetés oszlopot. Lásd az alábbi kimenetet:

SQL Server ISNULL függvény

5. ISNULL összesített függvényekkel

Az SQL Server lehetővé teszi az összesített függvények, például a SUM, AVG használatát az ISNULL függvénnyel. Tegyük fel, hogy meg kell szereznünk a fizetés összege oszlop jelen van az Alkalmazott táblázatban, és ha valamelyik fizetés oszlopban NULL szerepel, akkor azt 25000-re cseréljük a fizetések hozzáadása előtt.

Az összesítési módszerek végrehajtása előtt az alábbi lekérdezéssel frissítjük az alkalmazottak fizetését NULL-lal, amelynek azonosítója 2.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Az alábbi példa először lecseréli a NULL értéket 25000-re, majd végrehajtotta rajta a SUM függvényt. Lásd az alábbi kimenetet:

 SELECT SUM(ISNULL(Salary, 25000)) AS Sum_of_Salaries FROM Employee; 

A végrehajtás után az alábbi kimenetet kapjuk:

SQL Server ISNULL függvény

Hasonlóképpen, az ISNULL függvény használható a NULL értékek lecserélésére, majd az átlagos érték visszaadására AVG() függvény . Lásd az alábbi nyilatkozatot:

logikai érték a karakterláncra
 SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee; 

A végrehajtás után az alábbi kimenetet kapjuk:

SQL Server ISNULL függvény

Különbség az SQL Server ISNULL és az IS NULL között

Az ISNULL és az IS NULL függvények eltérőek az SQL Serverben. Az ISNULL függvényt használjuk, amikor szükségünk van rá cserélje ki a NULL értékeket meghatározott értékkel. Másrészt akkor használjuk az IS NULL függvényt, amikor akarjuk azonosítani a NULL értékeket egy táblázatban.

Nézzük meg az alábbi példát, hogy szemléltesse a különbségeiket .

Tegyük fel, hogy az alkalmazottak adatait a ' Munkavállaló' táblázat, amely NULL értékeket tartalmaz a Fizetés oszlopban. Az ilyen típusú információk megszerzéséhez az IS NULL függvényt kell használnunk a AHOL záradék a következőképpen:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Visszaadja a munkavállaló adatait, akinek a fizetése NULLA:

SQL Server ISNULL függvény

Ha most az ISNULL függvénnyel próbálunk ilyen típusú információkat szerezni, akkor az SQL Server a következő módon hiba :

 SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0; 

Itt a hiba:

SQL Server ISNULL függvény

Így egyértelmű, hogy az SQL Server nem teszi lehetővé, hogy az ISNULL-t használjuk a NULL értékek megkeresésére.