logo

Funkce SQL Server ISNULL

Je to vestavěná funkce v SQL Server. To uživateli umožňuje nahradit hodnoty NULL s danou náhradní hodnotou. Tento článek poskytuje úplný přehled funkce ISNULL, která vrátí alternativní hodnotu, pokud mají záznamy výrazu nebo tabulky hodnoty NULL.

Syntax

Následuje syntaxe, která ilustruje funkci ISNULL:

 ISNULL ( Expression, Replacement ) 

Jak vidíme, tato syntaxe přijímá pouze dva argumenty:

    Výraz: Používá se ke kontrole NULL. Může být jakéhokoli typu.Výměna, nahrazení: Je to hodnota, která bude vrácena, když má výraz hodnotu NULL. Musí být implicitně převoditelný na hodnotu typu výrazu.

Pokud je výraz vyhodnocen jako NULL, tato funkce nahradí hodnotu NULL nahrazující hodnotou. Když je argument datové typy jsou různé , SQL server implicitně transformuje datový typ náhradní hodnoty na datový typ výrazu před vrácením hodnoty. Hodnotu výrazu získáme, když výraz není NULL.

csma a csma cd

Funkce ISNULL může fungovat v SQL Server (od roku 2008), Parallel Data Warehouse, Azure SQL Database a Azure SQL Data Warehouse.

Příklad funkce ISNULL

Pojďme prozkoumat funkci ISNULL s některými příklady v SQL Server.

1. Funkce ISNULL s číselnou hodnotou

Níže uvedený příklad používá funkci ISNULL. Zde je prvním argumentem NULL; proto vrátí hodnotu druhého argumentu ve výsledku:

 SELECT ISNULL(NULL, 25) AS Result; 

Po provedení získáme následující výstup:

Funkce SQL Server ISNULL

2. Funkce ISNULL s daty řetězce znaků

Níže uvedený příklad používá funkci ISNULL. Zde získáme hodnotu řetězce 'Ahoj' protože to je první argument. Od definice funkce ISNULL() vrací hodnotu prvního argumentu, když není NULL:

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

Po provedení získáme následující výstup:

Funkce SQL Server ISNULL

3. Funkce ISNULL s proměnnými

Níže uvedený příklad používá funkci ISNULL a vrací výsledek pomocí proměnné:

jak velká je obrazovka mého monitoru
 DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result; 

Po provedení získáme následující výstup:

Funkce SQL Server ISNULL

4. Funkce ISNULL na tabulce

Zde uvidíme, jak můžeme nahradit hodnotu sloupce smysluplnou hodnotou, když obsahuje hodnoty null. Nejprve vytvořte tabulku s názvem ' Zaměstnanec' pomocí níže uvedeného prohlášení:

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

Nyní do této tabulky vložíme některé hodnoty pomocí níže uvedeného příkazu:

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

Když ověříme tabulku, můžeme to vidět zaměstnanci 2 a 3 mají NULL hodnota.

Funkce SQL Server ISNULL

Předpokládejme, že chceme nahradit hodnoty NULL těchto sloupců, aniž bychom je trvale aktualizovali v tabulce. V takovém případě můžeme pomocí funkce ISNULL nahradit hodnoty NULL konkrétní hodnotou.

Například , chceme vrátit stáří a plat zaměstnance s 22 a 25000, pokud jejich sloupce mají v tabulce Zaměstnanec hodnoty NULL. Můžeme to udělat pomocí následujícího prohlášení:

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

Po provedení získáme následující výstup:

Funkce SQL Server ISNULL

Pokud spustíme dotaz s funkcí ISNULL pro sloupec, kde žádný sloupec nemá v tabulce hodnoty NULL, tento dotaz vrátí skutečné hodnoty řádků.

ymail

Například , aktualizovali jsme plat zaměstnance, jehož ID=2 jak následuje:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Opět, pokud spustíme funkci ISNULL, nezmění sloupec platu. Viz níže uvedený výstup:

Funkce SQL Server ISNULL

5. ISNULL s agregačními funkcemi

SQL Server nám také umožňuje používat agregační funkce jako SUM, AVG s funkcí ISNULL. Předpokládejme, že možná potřebujeme získat součet platu v tabulce Zaměstnanec, a pokud má některý sloupec platu hodnotu NULL, bude před přidáním platů nahrazen 25000.

Před provedením agregačních metod aktualizujeme mzdu zaměstnance na hodnotu NULL, jejíž id je 2, pomocí níže uvedeného dotazu.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Níže uvedený příklad nejprve nahradí hodnotu NULL hodnotou 25000 a poté na ní provede funkci SUM. Viz níže uvedený výstup:

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

Po provedení získáme následující výstup:

Funkce SQL Server ISNULL

Podobně lze funkci ISNULL použít k nahrazení hodnot NULL a následnému vrácení průměrné hodnoty Funkce AVG(). . Viz níže uvedené prohlášení:

c# ukázkový kód
 SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee; 

Po provedení získáme následující výstup:

Funkce SQL Server ISNULL

Rozdíl mezi SQL Serverem ISNULL a IS NULL

Funkce ISNULL a IS NULL se na serveru SQL Server liší. V případě potřeby používáme funkci ISNULL nahradit hodnoty NULL se zadanou hodnotou. Na druhou stranu, když chceme, používáme funkci IS NULL identifikovat hodnoty NULL v tabulce.

Podívejme se na níže uvedený příklad, abychom ilustrovali jejich rozdíly .

Předpokládejme, že chceme získat údaje o zaměstnancích z ' Zaměstnanec' tabulka, která obsahuje hodnoty NULL ve sloupci Plat. K získání tohoto typu informací bychom měli použít funkci IS NULL v KDE doložka takto:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Vrátí detail zaměstnance, jehož plat je NULL:

Funkce SQL Server ISNULL

Nyní, pokud se pokusíme získat tento typ informací pomocí funkce ISNULL, SQL Server pomocí následujícího chyba :

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

Zde je chyba:

Funkce SQL Server ISNULL

Je tedy jasné, že SQL Server nám neumožňuje použít ISNULL k nalezení hodnot NULL.