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:
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:
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:
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:
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ść.
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:
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:
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:
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:
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:
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:
Zatem jasne jest, że SQL Server nie pozwala nam używać ISNULL do znajdowania wartości NULL.