01/10/2018, 17:04

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



0