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 на певне значення.

Наприклад , ми хочемо повернути вік і зарплата працівника з 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. Припустімо, що нам може знадобитися отримати сума заробітної плати стовпець, присутній у таблиці Employee, і якщо будь-який стовпець salary має 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.