logo

Funkcia SQL Server ISNULL

Je to vstavaná funkcia v SQL Server. Umožňuje užívateľovi nahradiť hodnoty NULL s danou náhradnou hodnotou. Tento článok poskytuje úplný prehľad funkcie ISNULL na vrátenie alternatívnej hodnoty, ak majú výrazy alebo záznamy tabuľky hodnoty NULL.

Syntax

Nasleduje syntax, ktorá ilustruje funkciu ISNULL:

 ISNULL ( Expression, Replacement ) 

Ako vidíme, táto syntax akceptuje iba dva argumenty:

    Výraz: Používa sa na kontrolu NULL. Môže byť akéhokoľvek typu.Výmena: Je to hodnota, ktorá sa vráti, keď je výraz NULL. Musí byť implicitne konvertibilná na hodnotu typu výrazu.

Ak sa výraz vyhodnotí ako NULL, táto funkcia nahradí hodnotu NULL náhradnou hodnotou. Keď je hádka dátové typy sú rôzne , SQL server implicitne transformuje dátový typ náhradnej hodnoty na dátový typ výrazu pred vrátením hodnoty. Hodnotu výrazu dostaneme, keď výraz nie je NULL.

Funkcia ISNULL môže fungovať v SQL Server (od roku 2008), Parallel Data Warehouse, Azure SQL Database a Azure SQL Data Warehouse.

Príklad funkcie ISNULL

Poďme preskúmať funkciu ISNULL s niekoľkými príkladmi v SQL Server.

1. Funkcia ISNULL s číselnou hodnotou

Nasledujúci príklad používa funkciu ISNULL. Tu je prvý argument NULL; preto vráti hodnotu druhého argumentu vo výsledku:

 SELECT ISNULL(NULL, 25) AS Result; 

Po vykonaní dostaneme nasledujúci výstup:

Funkcia SQL Server ISNULL

2. Funkcia ISNULL s údajmi o reťazci znakov

Nasledujúci príklad používa funkciu ISNULL. Tu dostaneme hodnotu reťazca 'Ahoj' pretože je to prvý argument. Od definície funkcie ISNULL() vracia hodnotu prvého argumentu, keď nie je NULL:

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

Po vykonaní dostaneme nasledujúci výstup:

Funkcia SQL Server ISNULL

3. Funkcia ISNULL s premennými

Nasledujúci príklad používa funkciu ISNULL a vráti výsledok pomocou premennej:

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

Po vykonaní dostaneme nasledujúci výstup:

Funkcia SQL Server ISNULL

4. Funkcia ISNULL na tabuľke

Tu uvidíme, ako môžeme nahradiť hodnotu stĺpca zmysluplnou hodnotou, keď obsahuje hodnoty null. Najprv vytvorte tabuľku s názvom ' zamestnanec' pomocou nižšie uvedeného vyhlásenia:

uzamknutie aplikácie pre Android
 CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL ); 

Teraz vložíme niektoré hodnoty do tejto tabuľky pomocou nižšie uvedeného príkazu:

 INSERT INTO Employee (Emp_Name, Age, Salary) VALUES ('Kevin Huges', 28, 45000), ('Rose Bennet', NULL, 36000), ('Peter Butler', 25, NULL); 

Keď overíme tabuľku, vidíme to zamestnanci 2 a 3 majú NULL hodnotu.

Funkcia SQL Server ISNULL

Predpokladajme, že chceme nahradiť hodnoty NULL týchto stĺpcov bez ich trvalej aktualizácie v tabuľke. V takom prípade môžeme pomocou funkcie ISNULL nahradiť hodnoty NULL konkrétnou hodnotou.

Napríklad , chceme vrátiť Vek a plat zamestnanca s 22 a 25 000, ak ich stĺpce majú v tabuľke Zamestnanec hodnoty NULL. Môžeme to urobiť pomocou nasledujúceho vyhlásenia:

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

Po vykonaní dostaneme nasledujúci výstup:

Funkcia SQL Server ISNULL

Ak spustíme dotaz s funkciou ISNULL pre stĺpec, kde žiadny stĺpec nemá v tabuľke hodnoty NULL, tento dotaz vráti skutočné hodnoty riadkov.

Napríklad , aktualizovali sme plat zamestnanca, ktorého ID=2 nasledovne:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Opäť, ak vykonáme funkciu ISNULL, nezmení stĺpec mzdy. Pozrite si výstup nižšie:

Funkcia SQL Server ISNULL

5. ISNULL s agregačnými funkciami

SQL Server nám tiež umožňuje používať agregované funkcie ako SUM, AVG s funkciou ISNULL. Predpokladajme, že by sme mohli potrebovať získať súčet platu v tabuľke Zamestnanec a ak má niektorý stĺpec platu hodnotu NULL, pred pridaním platov sa nahradí hodnotou 25 000.

Pred vykonaním agregovaných metód aktualizujeme mzdu zamestnanca na hodnotu NULL, ktorej ID je 2, pomocou nižšie uvedeného dotazu.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Nižšie uvedený príklad najskôr nahradí hodnotu NULL hodnotou 25000 a potom na nej vykoná funkciu SUM. Pozrite si výstup nižšie:

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

Po vykonaní dostaneme nasledujúci výstup:

Funkcia SQL Server ISNULL

Podobne možno použiť funkciu ISNULL na nahradenie hodnôt NULL a následné vrátenie priemernej hodnoty Funkcia AVG(). . Pozrite si nižšie uvedené vyhlásenie:

 SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee; 

Po vykonaní dostaneme nasledujúci výstup:

Funkcia SQL Server ISNULL

Rozdiel medzi SQL Server ISNULL a IS NULL

Funkcie ISNULL a IS NULL sú na serveri SQL Server odlišné. Funkciu ISNULL používame vtedy, keď to potrebujeme nahradiť hodnoty NULL s určenou hodnotou. Na druhej strane, keď chceme, používame funkciu IS NULL identifikovať hodnoty NULL v tabuľke.

Pozrime sa na nižšie uvedený príklad, aby sme ilustrovali ich rozdiely .

Predpokladajme, že chceme získať údaje o zamestnancoch z ' zamestnanec' tabuľku, ktorá obsahuje hodnoty NULL v stĺpci Plat. Na získanie tohto typu informácií by sme mali použiť funkciu IS NULL v KDE doložka takto:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Vráti podrobnosti o zamestnancovi, ktorého plat je NULL:

Funkcia SQL Server ISNULL

Teraz, ak sa pokúsime získať tento typ informácií pomocou funkcie ISNULL, SQL Server pomocou nasledujúceho chyba :

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

Tu je chyba:

Funkcia SQL Server ISNULL

Je teda jasné, že SQL Server nám neumožňuje použiť ISNULL na nájdenie hodnôt NULL.