logo

Функция ISNULL на SQL Server

Това е вградена функция в SQL Server. Тя позволява на потребителя да заменете стойностите NULL с дадена възстановителна стойност. Тази статия дава пълен преглед на функцията ISNULL за връщане на алтернативна стойност, ако изразът или записите в таблицата имат NULL стойности.

Синтаксис

Следното е синтаксис, който илюстрира функцията ISNULL:

 ISNULL ( Expression, Replacement ) 

Както виждаме, този синтаксис приема само два аргумента:

    Изразяване: Използва се за проверка за NULL. Може да бъде от всякакъв вид.Замяна: Това е стойността, която ще бъде върната, когато изразът е NULL. Тя трябва да бъде неявно конвертируема в стойност от типа израз.

Ако изразът се изчисли на NULL, тази функция замества NULL стойността със заместващата стойност. Когато аргументът е типовете данни са различни , SQL сървъра имплицитно преобразува типа данни на заместващата стойност в типа данни на израза преди да върне стойност. Ще получим стойността на израза, когато изразът не е NULL.

Функцията ISNULL може да работи в SQL Server (започвайки от 2008), Parallel Data Warehouse, Azure SQL Database и Azure SQL Data Warehouse.

Пример за функция ISNULL

Нека проучим функцията ISNULL с някои примери в SQL Server.

1. Функция ISNULL с числова стойност

Примерът по-долу използва функцията ISNULL. Тук първият аргумент е NULL; следователно връща стойността на втори аргумент в резултат:

 SELECT ISNULL(NULL, 25) AS Result; 

След изпълнение ще получим изхода по-долу:

Функция ISNULL на SQL Server

2. Функция ISNULL с данни от символен низ

Примерът по-долу използва функцията ISNULL. Тук ще получим стойността на низа 'Здравейте' защото това е първият аргумент. Що се отнася до дефиницията на функцията ISNULL(), тя връща стойността на първия аргумент, когато НЕ е NULL:

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

След изпълнение ще получим изхода по-долу:

Функция ISNULL на SQL Server

3. Функция ISNULL с променливи

Примерът по-долу използва функцията ISNULL и връща резултата с помощта на променлива:

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

След изпълнение ще получим изхода по-долу:

Функция ISNULL на SQL Server

4. Функция ISNULL в таблицата

Тук ще видим как можем да заменим стойност на колона със смислена стойност, когато съдържа нулеви стойности. Нека първо създадем таблица с име ' служител използвайки следното изявление:

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

Сега ще вмъкнем някои стойности в тази таблица, като използваме израза по-долу:

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

Когато проверим таблицата, можем да видим това служители 2 и 3 имат NULL стойност.

Функция ISNULL на SQL Server

Да предположим, че искаме да заменим NULL стойностите на тези колони, без да ги актуализираме постоянно в таблицата. В този случай можем да използваме функцията ISNULL, за да заменим NULL стойностите с конкретната стойност.

Изтегляне на видео от youtube vlc

Например , искаме да върнем възраст и заплата на служителя съответно с 22 и 25000, ако техните колони имат NULL стойности в таблицата Employee. Можем да направим това, като използваме следния израз:

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

След изпълнение ще получим изхода по-долу:

Функция ISNULL на SQL Server

Ако изпълним заявката с функцията ISNULL за колоната, където никоя колона няма NULL стойности в таблицата, тази заявка ще върне действителните стойности на редовете.

Например , актуализирахме заплата на служителя, чийто ID=2 както следва:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Отново, ако изпълним функцията ISNULL, тя не променя колоната за заплати. Вижте резултата по-долу:

Функция ISNULL на SQL Server

5. ISNULL с агрегатни функции

SQL Server също ни позволява да използваме агрегатните функции като SUM, AVG с функцията ISNULL. Да предположим, че може да се наложи да вземем сбор от заплата колона, присъстваща в таблицата Служител, и ако някоя колона за заплати има NULL, тя ще бъде заменена с 25000, преди да се добавят заплатите.

Преди да изпълним обобщените методи, ще актуализираме заплатата на служителя с NULL, чийто идентификатор е 2, като използваме заявката по-долу.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Примерът по-долу първо замества NULL стойността с 25000 и след това изпълнява функцията SUM върху нея. Вижте резултата по-долу:

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

След изпълнение ще получим изхода по-долу:

Функция ISNULL на SQL Server

По подобен начин функцията ISNULL може да се използва за замяна на NULL стойности и след това да върне средната стойност с Функция AVG(). . Вижте изявлението по-долу:

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

След изпълнение ще получим изхода по-долу:

Функция ISNULL на SQL Server

Разлика между SQL Server ISNULL и IS NULL

Функциите ISNULL и IS NULL са различни в SQL Server. Използваме функцията ISNULL, когато имаме нужда заменете стойностите NULL с определена стойност. От друга страна, ние използваме функцията IS NULL, когато искаме идентифицира NULL стойности в таблица.

Нека видим примера по-долу, за да илюстрираме разликите им .

Да предположим, че искаме да получим данните за служителите от „ служител таблица, която съдържа NULL стойности в колоната Заплата. За да получим този тип информация, трябва да използваме функцията IS NULL в КЪДЕТО клауза, както следва:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Той ще върне подробностите за служителя, чиято заплата е NULL:

Функция ISNULL на SQL Server

Сега, ако се опитаме да получим този тип информация с функцията ISNULL, SQL Server чрез следното грешка :

разлика между двоично дърво и двоично дърво за търсене
 SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0; 

Ето грешката:

Функция ISNULL на SQL Server

По този начин е ясно, че SQL Server не ни позволява да използваме ISNULL за намиране на NULL стойности.