logo

Funkcja SQL Server ISNULL

Jest to wbudowana funkcja w SQL Server. Umożliwia to użytkownikowi zamień wartości NULL z określoną wartością zastępczą. W tym artykule przedstawiono pełny przegląd funkcji ISNULL służącej do zwracania wartości alternatywnej, jeśli rekordy wyrażenia lub tabeli mają wartości NULL.

Składnia

Poniżej znajduje się składnia ilustrująca funkcję ISNULL:

 ISNULL ( Expression, Replacement ) 

Jak widzimy, ta składnia akceptuje tylko dwa argumenty:

    Wyrażenie: Służy do sprawdzania wartości NULL. Może być dowolnego typu.Wymiana: Jest to wartość, która zostanie zwrócona, gdy wyrażenie ma wartość NULL. Musi być niejawnie konwertowalna na wartość typu wyrażenia.

Jeśli wyrażenie ma wartość NULL, ta funkcja zastępuje wartość NULL wartością zastępczą. Kiedy argument jest typy danych są różne , serwer SQL niejawnie przekształca typ danych wartości zastępczej na typ danych wyrażenie przed zwróceniem wartości. Wartość wyrażenia otrzymamy, gdy wyrażenie nie ma wartości NULL.

Funkcja ISNULL może działać w SQL Server (począwszy od 2008 r.), Parallel Data Warehouse, Azure SQL Database i Azure SQL Data Warehouse.

Przykład funkcji ISNULL

Przyjrzyjmy się funkcji ISNULL na kilku przykładach w SQL Server.

1. Funkcja ISNULL z wartością liczbową

Poniższy przykład wykorzystuje funkcję ISNULL. Tutaj pierwszy argument ma wartość NULL; dlatego zwraca wartość drugiego argumentu w wyniku:

 SELECT ISNULL(NULL, 25) AS Result; 

Po wykonaniu otrzymamy poniższe dane wyjściowe:

Funkcja SQL Server ISNULL

2. Funkcja ISNULL z danymi w postaci ciągu znaków

Poniższy przykład wykorzystuje funkcję ISNULL. Tutaj otrzymamy wartość ciągu 'Cześć' ponieważ jest to pierwszy argument. Od definicji funkcji ISNULL() zwraca ona wartość pierwszego argumentu, jeśli NIE ma wartości NULL:

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

Po wykonaniu otrzymamy poniższe dane wyjściowe:

Funkcja SQL Server ISNULL

3. Funkcja ISNULL ze zmiennymi

Poniższy przykład wykorzystuje funkcję ISNULL i zwraca wynik za pomocą zmiennej:

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

Po wykonaniu otrzymamy poniższe dane wyjściowe:

Funkcja SQL Server ISNULL

4. Funkcja ISNULL w tabeli

Tutaj zobaczymy, jak możemy zastąpić wartość kolumny znaczącą wartością, jeśli zawiera ona wartości null. Stwórzmy najpierw tabelę o nazwie „ Pracownik' używając poniższego stwierdzenia:

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

Teraz wstawimy pewne wartości do tej tabeli, korzystając z poniższej instrukcji:

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

Kiedy zweryfikujemy tabelę, możemy to zobaczyć pracownicy 2 i 3 mają wartość NULL wartość.

Funkcja SQL Server ISNULL

Załóżmy, że chcemy zastąpić wartości NULL tych kolumn bez trwałego aktualizowania ich w tabeli. W takim przypadku możemy użyć funkcji ISNULL, aby zastąpić wartości NULL określoną wartością.

Na przykład , chcemy zwrócić wiek I wynagrodzenie pracownika odpowiednio 22 i 25000, jeśli ich kolumny w tabeli Pracownik mają wartości NULL. Możemy to zrobić za pomocą następującej instrukcji:

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

Po wykonaniu otrzymamy poniższe dane wyjściowe:

Funkcja SQL Server ISNULL

Jeśli uruchomimy zapytanie z funkcją ISNULL dla kolumny, w której żadna kolumna w tabeli nie ma wartości NULL, to zapytanie to zwróci rzeczywiste wartości wierszy.

przełącznik Javy

Na przykład , zaktualizowaliśmy wynagrodzenie pracownika, którego Identyfikator=2 następująco:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Ponownie, jeśli wykonamy funkcję ISNULL, nie zmieni to kolumny wynagrodzenia. Zobacz poniższe dane wyjściowe:

Funkcja SQL Server ISNULL

5. ISNULL z funkcjami agregującymi

SQL Server umożliwia nam także korzystanie z funkcji agregujących takich jak SUM, AVG z funkcją ISNULL. Załóżmy, że będziemy musieli zdobyć plik suma wynagrodzenia kolumna obecna w tabeli Pracownik, a jeśli którakolwiek kolumna wynagrodzeń ma wartość NULL, przed dodaniem wynagrodzeń zostanie ona zastąpiona liczbą 25000.

Przed wykonaniem metod agregujących zaktualizujemy wynagrodzenie pracownika o wartość NULL o identyfikatorze 2, korzystając z poniższego zapytania.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Poniższy przykład najpierw zastępuje wartość NULL wartością 25000, a następnie wykonuje na niej funkcję SUMA. Zobacz poniższe dane wyjściowe:

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

Po wykonaniu otrzymamy poniższe dane wyjściowe:

Funkcja SQL Server ISNULL

Podobnie funkcji ISNULL można użyć do zastąpienia wartości NULL, a następnie zwrócenia wartości średniej Funkcja AVG(). . Zobacz poniższe oświadczenie:

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

Po wykonaniu otrzymamy poniższe dane wyjściowe:

Funkcja SQL Server ISNULL

Różnica między SQL Server ISNULL a IS NULL

Funkcje ISNULL i IS NULL różnią się w SQL Server. Funkcji ISNULL używamy, gdy mamy taką potrzebę zamień wartości NULL z określoną wartością. Z drugiej strony używamy funkcji IS NULL, kiedy chcemy zidentyfikować wartości NULL w stole.

Zobaczmy poniższy przykład, aby zilustrować ich różnice .

Załóżmy, że chcemy uzyskać dane pracownika z „ Pracownik' tabela zawierająca wartości NULL w kolumnie Wynagrodzenie. Aby uzyskać tego typu informacje, powinniśmy skorzystać z funkcji IS NULL w pliku GDZIE klauzulę w następujący sposób:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Zwróci dane pracownika, którego wynagrodzenie wynosi NULL:

Funkcja SQL Server ISNULL

Teraz, jeśli spróbujemy uzyskać tego typu informacje za pomocą funkcji ISNULL, SQL Server w następujący sposób błąd :

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

Oto błąd:

Funkcja SQL Server ISNULL

Zatem jasne jest, że SQL Server nie pozwala nam używać ISNULL do znajdowania wartości NULL.