logo

SQL Server ISNULL-funksjon

Det er en innebygd funksjon i SQL Server. Det lar brukeren erstatte NULL-verdiene med en gitt erstatningsverdi. Denne artikkelen gir en fullstendig oversikt over ISNULL-funksjonen for å returnere en alternativ verdi hvis uttrykket eller tabellpostene har NULL-verdier.

Syntaks

Følgende er en syntaks som illustrerer ISNULL-funksjonen:

 ISNULL ( Expression, Replacement ) 

Som vi kan se at denne syntaksen bare godtar to argumenter:

    Uttrykk: Den brukes til å se etter NULL. Det kan være av hvilken som helst type.Erstatning: Det er verdien som returneres når uttrykket er NULL. Den må være implisitt konverterbar til en verdi av uttrykkstypen.

Hvis uttrykket evalueres til NULL, erstatter denne funksjonen NULL-verdien med erstatningsverdien. Når argumentet er datatyper er forskjellige , SQL-serveren transformerer implisitt erstatningsverdidatatypen til uttrykksdatatypen før du returnerer en verdi. Vi vil få uttrykksverdien når uttrykket ikke er NULL.

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

ISNULL-funksjonseksempel

La oss utforske ISNULL-funksjonen med noen eksempler i SQL Server.

1. ISNULL-funksjonen med den numeriske verdien

Eksempelet nedenfor bruker ISNULL-funksjonen. Her er det første argumentet NULL; derfor returnerer den verdien av et andre argument i et resultat:

 SELECT ISNULL(NULL, 25) AS Result; 

Etter utførelse vil vi få følgende utgang:

SQL Server ISNULL-funksjon

2. ISNULL-funksjon med tegnstrengdata

Eksempelet nedenfor bruker ISNULL-funksjonen. Her får vi strengverdien 'Hallo' fordi det er det første argumentet. Fra ISNULL()-funksjonsdefinisjonen, returnerer den den første argumentverdien når den IKKE er NULL:

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

Etter utførelse vil vi få følgende utgang:

SQL Server ISNULL-funksjon

3. ISNULL-funksjon med variabler

Eksemplet nedenfor bruker ISNULL-funksjonen og returnerer resultatet ved hjelp av en variabel:

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

Etter utførelse vil vi få følgende utgang:

SQL Server ISNULL-funksjon

4. ISNULL-funksjon på bordet

Her skal vi se hvordan vi kan erstatte en kolonneverdi med en meningsfull verdi når den inneholder nullverdier. La oss først lage en tabell med navnet ' Ansatt' ved å bruke utsagnet nedenfor:

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

Nå vil vi sette inn noen verdier i denne tabellen ved å bruke setningen nedenfor:

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

Når vi verifiserer tabellen, kan vi se det ansatte 2 og 3 har NULL verdi.

SQL Server ISNULL-funksjon

Anta at vi ønsker å erstatte NULL-verdiene til disse kolonnene uten å oppdatere dem permanent i tabellen. I så fall kan vi bruke ISNULL-funksjonen til å erstatte NULL-verdiene med den spesifikke verdien.

For eksempel , ønsker vi å returnere alder og lønn av den ansatte med henholdsvis 22 og 25 000 hvis kolonnene deres har NULL-verdier i Employee-tabellen. Vi kan gjøre dette ved å bruke følgende utsagn:

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

Etter utførelse vil vi få følgende utgang:

SQL Server ISNULL-funksjon

Hvis vi kjører spørringen med ISNULL-funksjonen for kolonnen der ingen kolonne har NULL-verdier i tabellen, vil denne spørringen returnere de faktiske verdiene til radene.

For eksempel , vi har oppdatert lønn av den ansatte hvis ID=2 følgende:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Igjen, hvis vi utfører ISNULL-funksjonen, endrer den ikke lønnskolonnen. Se utgangen nedenfor:

SQL Server ISNULL-funksjon

5. ISNULL med aggregerte funksjoner

SQL Server lar oss også bruke aggregerte funksjoner som SUM, AVG med ISNULL-funksjonen. Anta at vi kanskje trenger å få summen av en lønn kolonne som er tilstede i tabellen Ansatte, og hvis en lønnskolonne har NULL, vil den bli erstattet med 25000 før lønnene legges til.

Før vi utfører de aggregerte metodene, vil vi oppdatere ansattes lønn med NULL hvis id er 2, ved å bruke spørringen nedenfor.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Eksempelet nedenfor erstatter først NULL-verdien med 25000 og utførte deretter SUM-funksjonen på den. Se utgangen nedenfor:

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

Etter utførelse vil vi få følgende utgang:

SQL Server ISNULL-funksjon

På samme måte kan ISNULL-funksjonen brukes til å erstatte NULL-verdier og deretter returnere gjennomsnittsverdien med AVG() funksjon . Se uttalelsen nedenfor:

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

Etter utførelse vil vi få følgende utgang:

SQL Server ISNULL-funksjon

Forskjellen mellom SQL Server ISNULL med IS NULL

ISNULL- og IS NULL-funksjonene er begge forskjellige i SQL Server. Vi bruker ISNULL-funksjonen når vi har behov for det erstatte NULL-verdiene med en spesifisert verdi. På den annen side bruker vi IS NULL-funksjonen når vi vil identifisere NULL-verdier i en tabell.

La oss se eksemplet nedenfor for å illustrere forskjellene deres .

Anta at vi ønsker å hente ansattdataene fra ' Ansatt' tabell som inneholder NULL-verdier i kolonnen Lønn. For å få denne typen informasjon, bør vi bruke IS NULL-funksjonen i HVOR klausul som følger:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Den vil returnere ansattinformasjonen hvis lønn er NULL:

SQL Server ISNULL-funksjon

Nå, hvis vi prøver å få denne typen informasjon med ISNULL-funksjonen, SQL Server gjennom følgende feil :

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

Her er feilen:

SQL Server ISNULL-funksjon

Dermed er det klart at SQL Server ikke tillater oss å bruke ISNULL for å finne NULL-verdier.

juster css-bilde