logo

SQL Server ISNULL-funktion

Det är en inbyggd funktion i SQL Server. Det låter användaren ersätt NULL-värdena med ett givet återanskaffningsvärde. Den här artikeln ger en fullständig översikt över ISNULL-funktionen för att returnera ett alternativt värde om uttrycket eller tabellposterna har NULL-värden.

Syntax

Följande är en syntax som illustrerar ISNULL-funktionen:

 ISNULL ( Expression, Replacement ) 

Som vi kan se att denna syntax endast accepterar två argument:

    Uttryck: Den används för att kontrollera NULL. Det kan vara av vilken typ som helst.Ersättning: Det är värdet som kommer att returneras när uttrycket är NULL. Det måste vara implicit konverterbart till ett värde av uttryckstypen.

Om uttrycket utvärderas till NULL, ersätter den här funktionen NULL-värdet med ersättningsvärdet. När argumentet är datatyperna är olika , SQL-servern omvandlar implicit datatypen för ersättningsvärdet till uttrycksdatatypen innan du returnerar ett värde. Vi kommer att få uttrycksvärdet när uttrycket inte är NULL.

ISNULL-funktionen kan fungera i SQL Server (från och med 2008), Parallel Data Warehouse, Azure SQL Database och Azure SQL Data Warehouse.

ISNULL-funktionsexempel

Låt oss utforska ISNULL-funktionen med några exempel i SQL Server.

1. ISNULL-funktionen med det numeriska värdet

I exemplet nedan används ISNULL-funktionen. Här är det första argumentet NULL; därför returnerar den värdet av ett andra argument i ett resultat:

java-arrayer
 SELECT ISNULL(NULL, 25) AS Result; 

Efter exekvering kommer vi att få följande utdata:

SQL Server ISNULL-funktion

2. ISNULL-funktion med teckensträngsdata

I exemplet nedan används ISNULL-funktionen. Här får vi strängvärdet 'Hallå' eftersom det är det första argumentet. Från funktionsdefinitionen ISNULL() returnerar den det första argumentvärdet när det INTE är NULL:

kommando i nod js
 SELECT ISNULL('Hello', 'Javatpoint') AS Result; 

Efter exekvering kommer vi att få följande utdata:

SQL Server ISNULL-funktion

3. ISNULL-funktion med variabler

Exemplet nedan använder ISNULL-funktionen och returnerar resultatet med en variabel:

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

Efter exekvering kommer vi att få följande utdata:

SQL Server ISNULL-funktion

4. ISNULL-funktion på bordet

Här ska vi se hur vi kan ersätta ett kolumnvärde med ett meningsfullt värde när det innehåller nollvärden. Låt oss först skapa en tabell som heter ' Anställd' med hjälp av följande uttalande:

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

Nu kommer vi att infoga några värden i den här tabellen med hjälp av följande uttalande:

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

När vi verifierar tabellen kan vi se det anställda 2 och 3 har en NULL värde.

SQL Server ISNULL-funktion

Anta att vi vill ersätta NULL-värdena för dessa kolumner utan att uppdatera dem permanent i tabellen. I så fall kan vi använda ISNULL-funktionen för att ersätta NULL-värdena med det specifika värdet.

Till exempel , vi vill lämna tillbaka ålder och lön av den anställde med 22 respektive 25 000 om deras kolumner har NULL-värden i tabellen Employee. Vi kan göra detta genom att använda följande uttalande:

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

Efter exekvering kommer vi att få följande utdata:

SQL Server ISNULL-funktion

Om vi ​​kör frågan med ISNULL-funktionen för kolumnen där ingen kolumn har NULL-värden i tabellen, kommer denna fråga att returnera de faktiska värdena för raderna.

Till exempel , vi har uppdaterat lön av den anställde vars ID=2 som följer:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Återigen, om vi kör ISNULL-funktionen ändrar den inte lönekolumnen. Se utgången nedan:

SQL Server ISNULL-funktion

5. ISNULL med aggregerade funktioner

SQL Server gör det också möjligt för oss att använda de aggregerade funktionerna som SUM, AVG med ISNULL-funktionen. Anta att vi kan behöva skaffa summan av en lön kolumnen som finns i tabellen Anställd, och om någon lönekolumn har NULL kommer den att ersättas med 25 000 innan lönerna läggs till.

Innan vi utför de aggregerade metoderna kommer vi att uppdatera anställdas lön med NULL vars id är 2, med hjälp av nedanstående fråga.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Exemplet nedan ersätter först NULL-värdet med 25000 och utförde sedan SUM-funktionen på det. Se utgången nedan:

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

Efter exekvering kommer vi att få följande utdata:

SQL Server ISNULL-funktion

På liknande sätt kan ISNULL-funktionen användas för att ersätta NULL-värden och sedan returnera medelvärdet med AVG() funktion . Se nedanstående uttalande:

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

Efter exekvering kommer vi att få följande utdata:

sträng i c
SQL Server ISNULL-funktion

Skillnaden mellan SQL Server ISNULL och IS NULL

Funktionerna ISNULL och IS NULL är båda olika i SQL Server. Vi använder ISNULL-funktionen när vi har behov av det ersätt NULL-värdena med ett angivet värde. Å andra sidan använder vi funktionen IS NULL när vi vill identifiera NULL-värden i ett bord.

Låt oss se exemplet nedan för att illustrera deras skillnader .

Anta att vi vill få personaldata från ' Anställd' tabell som innehåller NULL-värden i kolumnen Lön. För att få den här typen av information bör vi använda funktionen IS NULL i VAR klausul enligt följande:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Det kommer att returnera den anställde vars lön är NULL:

SQL Server ISNULL-funktion

Nu, om vi försöker få den här typen av information med ISNULL-funktionen, SQL Server genom följande fel :

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

Här är felet:

SQL Server ISNULL-funktion

Således är det tydligt att SQL Server inte tillåter oss att använda ISNULL för att hitta NULL-värden.