Bạn có thể sử dụng COALESCE
hoặc ISNULL
. Đầu tiên là tiêu chuẩn và trả về NOT NULL
đầu tiên đối số (hoặc NULL
nếu tất cả các đối số là NULL
)
SELECT COALESCE(micv.value,'Pending') as value
ISNULL
chỉ bị hạn chế ở 2 đối số nhưng hiệu quả hơn trong SQL Server nếu giá trị đầu tiên được kiểm tra là đắt tiền để đánh giá (ví dụ:truy vấn con).
Một "gotcha" tiềm năng với ISNULL
cần lưu ý là nó trả về kiểu dữ liệu của tham số đầu tiên, vì vậy nếu chuỗi được thay thế dài hơn kiểu dữ liệu cột sẽ cho phép, bạn sẽ cần ép kiểu.
Ví dụ:
CREATE TABLE T(C VARCHAR(3) NULL);
INSERT T VALUES (NULL);
SELECT ISNULL(C,'Unknown')
FROM T
Sẽ trả về Unk
Nhưng ISNULL(CAST(C as VARCHAR(7)),'Unknown')
hoặc COALESCE
cả hai sẽ hoạt động như mong muốn.