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:
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:
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:
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:
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.
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:
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:
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:
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:
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:
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:
Je teda jasné, že SQL Server nám neumožňuje použiť ISNULL na nájdenie hodnôt NULL.