Това е вградена функция в SQL Server. Тя позволява на потребителя да заменете стойностите NULL с дадена възстановителна стойност. Тази статия дава пълен преглед на функцията ISNULL за връщане на алтернативна стойност, ако изразът или записите в таблицата имат NULL стойности.
Синтаксис
Следното е синтаксис, който илюстрира функцията ISNULL:
ISNULL ( Expression, Replacement )
Както виждаме, този синтаксис приема само два аргумента:
Ако изразът се изчисли на 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;
След изпълнение ще получим изхода по-долу:
2. Функция ISNULL с данни от символен низ
Примерът по-долу използва функцията ISNULL. Тук ще получим стойността на низа 'Здравейте' защото това е първият аргумент. Що се отнася до дефиницията на функцията ISNULL(), тя връща стойността на първия аргумент, когато НЕ е NULL:
SELECT ISNULL('Hello', 'Javatpoint') AS Result;
След изпълнение ще получим изхода по-долу:
3. Функция ISNULL с променливи
Примерът по-долу използва функцията ISNULL и връща резултата с помощта на променлива:
DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result;
След изпълнение ще получим изхода по-долу:
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 стойност.
Да предположим, че искаме да заменим 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 за колоната, където никоя колона няма NULL стойности в таблицата, тази заявка ще върне действителните стойности на редовете.
Например , актуализирахме заплата на служителя, чийто ID=2 както следва:
UPDATE Employee SET Salary = 65000 WHERE ID=2;
Отново, ако изпълним функцията ISNULL, тя не променя колоната за заплати. Вижте резултата по-долу:
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 може да се използва за замяна на NULL стойности и след това да върне средната стойност с Функция AVG(). . Вижте изявлението по-долу:
SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee;
След изпълнение ще получим изхода по-долу:
Разлика между 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 чрез следното грешка :
разлика между двоично дърво и двоично дърво за търсене
SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0;
Ето грешката:
По този начин е ясно, че SQL Server не ни позволява да използваме ISNULL за намиране на NULL стойности.