logo

SQL Server ISNULL-funktion

Det er en indbygget funktion i SQL Server. Det giver brugeren mulighed for erstatte NULL-værdierne med en given genanskaffelsesværdi. Denne artikel giver et komplet overblik over ISNULL-funktionen til at returnere en alternativ værdi, hvis udtrykket eller tabelposterne har NULL-værdier.

Syntaks

Følgende er en syntaks, der illustrerer ISNULL-funktionen:

 ISNULL ( Expression, Replacement ) 

Som vi kan se, at denne syntaks kun accepterer to argumenter:

    Udtryk: Det bruges til at tjekke for NULL. Det kan være af enhver art.Udskiftning: Det er værdien, der returneres, når udtrykket er NULL. Det skal implicit kunne konverteres til en værdi af udtrykstypen.

Hvis udtrykket evalueres til NULL, erstatter denne funktion NULL-værdien med erstatningsværdien. Når argumentet er datatyper er forskellige , SQL-serveren transformerer implicit erstatningsværdidatatypen til udtryksdatatypen før du returnerer en værdi. Vi får udtryksværdien, når udtrykket ikke er NULL.

ISNULL-funktionen kan fungere i SQL Server (startende med 2008), Parallel Data Warehouse, Azure SQL Database og Azure SQL Data Warehouse.

ISNULL-funktionseksempel

Lad os udforske ISNULL-funktionen med nogle eksempler i SQL Server.

1. ISNULL funktion med den numeriske værdi

Nedenstående eksempel bruger ISNULL-funktionen. Her er det første argument NULL; derfor returnerer den værdien af ​​et andet argument i et resultat:

 SELECT ISNULL(NULL, 25) AS Result; 

Efter udførelse får vi nedenstående output:

SQL Server ISNULL-funktion

2. ISNULL-funktion med tegnstrengdata

Nedenstående eksempel bruger ISNULL-funktionen. Her får vi strengværdien 'Hej' fordi det er det første argument. Fra funktionsdefinitionen ISNULL() returnerer den den første argumentværdi, når den IKKE er NULL:

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

Efter udførelse får vi nedenstående output:

SQL Server ISNULL-funktion

3. ISNULL funktion med variabler

Nedenstående eksempel bruger ISNULL-funktionen og returnerer resultatet ved hjælp af en variabel:

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

Efter udførelse får vi nedenstående output:

SQL Server ISNULL-funktion

4. ISNULL-funktion på bordet

Her skal vi se, hvordan vi kan erstatte en kolonneværdi med en meningsfuld værdi, når den indeholder nulværdier. Lad os først oprette en tabel med navnet ' medarbejder' ved hjælp af nedenstående udsagn:

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

Nu vil vi indsætte nogle værdier i denne tabel ved hjælp af nedenstående erklæring:

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

Når vi verificerer tabellen, kan vi se det medarbejdere 2 og 3 har en NULL værdi.

SQL Server ISNULL-funktion

Antag, at vi ønsker at erstatte NULL-værdierne for disse kolonner uden at opdatere dem permanent i tabellen. I så fald kan vi bruge ISNULL-funktionen til at erstatte NULL-værdierne med den specifikke værdi.

For eksempel , vi ønsker at returnere alder og løn af medarbejderen med henholdsvis 22 og 25000, hvis deres kolonner har NULL-værdier i tabellen Medarbejder. Det kan vi gøre ved at bruge følgende udsagn:

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

Efter udførelse får vi nedenstående output:

SQL Server ISNULL-funktion

Hvis vi kører forespørgslen med ISNULL-funktionen for kolonnen, hvor ingen kolonne har NULL-værdier i tabellen, vil denne forespørgsel returnere de faktiske værdier af rækkerne.

For eksempel , vi har opdateret løn af den medarbejder, hvis ID=2 som følger:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Igen, hvis vi udfører ISNULL-funktionen, ændrer den ikke lønkolonnen. Se nedenstående output:

SQL Server ISNULL-funktion

5. ISNULL med aggregerede funktioner

SQL Server giver os også mulighed for at bruge de samlede funktioner som SUM, AVG med ISNULL-funktionen. Antag, at vi måske bliver nødt til at få summen af ​​en løn kolonne til stede i medarbejdertabellen, og hvis en lønkolonne har NULL, vil den blive erstattet med 25000, før lønningerne tilføjes.

Før vi udfører de aggregerede metoder, opdaterer vi medarbejderlønnen med NULL, hvis id er 2, ved hjælp af nedenstående forespørgsel.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Nedenstående eksempel erstatter først NULL-værdien med 25000 og udførte derefter SUM-funktionen på den. Se nedenstående output:

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

Efter udførelse får vi nedenstående output:

SQL Server ISNULL-funktion

På samme måde kan ISNULL-funktionen bruges til at erstatte NULL-værdier og derefter returnere gennemsnitsværdien med AVG() funktion . Se nedenstående erklæring:

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

Efter udførelse får vi nedenstående output:

SQL Server ISNULL-funktion

Forskellen mellem SQL Server ISNULL med IS NULL

Funktionerne ISNULL og IS NULL er begge forskellige i SQL Server. Vi bruger ISNULL-funktionen, når vi har behov for det erstatte NULL-værdierne med en specificeret værdi. På den anden side bruger vi funktionen IS NULL, når vi vil identificere NULL-værdier i en tabel.

Lad os se nedenstående eksempel for at illustrere deres forskelle .

Antag, at vi ønsker at få medarbejderdata fra ' medarbejder' tabel, der indeholder NULL-værdier i kolonnen Løn. For at få denne type information skal vi bruge funktionen IS NULL i HVOR klausul som følger:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Det vil returnere medarbejderoplysningerne, hvis løn er NULL:

SQL Server ISNULL-funktion

Nu, hvis vi prøver at få denne type information med ISNULL-funktionen, SQL Server gennem følgende fejl :

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

Her er fejlen:

SQL Server ISNULL-funktion

Det er således klart, at SQL Server ikke tillader os at bruge ISNULL til at finde NULL-værdier.

terminal kali linux