Hàm ISNULL thay giá trị NULL bằng giá trị truyền vào
Khi bạn cộng 2 giá trị lại với nhau (A + B), khi một trong 2 cột đó có một giá trị NULL (ví dụ A = NULL) thì giá trị bạn trả về là NULL (A + B = NULL), mặc dù B khác NULL. Vì SQL hiểu một số + giá trị NULL thì bằng NULL. Vì vậy để cộng được giá trị đúng, thì bạn cần phải dùng một hàm kiểm tra giá ...
Khi bạn cộng 2 giá trị lại với nhau (A + B), khi một trong 2 cột đó có một giá trị NULL (ví dụ A = NULL) thì giá trị bạn trả về là NULL (A + B = NULL), mặc dù B khác NULL. Vì SQL hiểu một số + giá trị NULL thì bằng NULL. Vì vậy để cộng được giá trị đúng, thì bạn cần phải dùng một hàm kiểm tra giá trị trả về. Nếu A = NULL thì trả về 0, để 0 + B = B là một giá trị đúng mà bạn mong muốn.
Cú pháp:
ISNULL ( check_expression , replacement_value )
Trong đó:
- check_expression: là một biểu thức để chúng ta kiểm tra xem nó có bằng NULL không, check_expression có thể là bất cứ kiểu dữ liệu gì.
- replacement_value: là một giá trị trả về thay thế cho check_expression, khi check_expression = NULL, replacement_value bắt buộc phải cùng kiểu dữ liệu với check_expression.
- Hàm ISNULL trả về kiểu dữ liệu giống với kiểu dữ liệu của check_expression
Ví dụ:
Cách 1: chúng ta không dùng hàm ISNULL để kiểm tra về, nên kết quả ra sai khi có một giá trị T.Price = NULLhoặc T.Advance = NULLthì giá trị sẽ NULL
Cách 2: nếu giá trị nào NULL thì hàm ISNULL sẽ thay giá trị NULLđó bằng 0, và kết cả tổng cộng là đúng.
-- Cách 1 -- USE Pubs Select T.Price + T.Advance AS Tong FROM Titles as T -- Cách 2 -- USE Pubs Select ISNULL(T.Price, 0) + ISNULL(T.Advance, 0) AS Tong FROM Titles as T