Sự khác biệt chính giữa hai là IFNULL
hàm nhận hai đối số và trả về đối số đầu tiên nếu nó không phải là NULL
hoặc thứ hai nếu cái đầu tiên là NULL
.
COALESCE
hàm có thể nhận hai hoặc nhiều tham số và trả về tham số không phải NULL đầu tiên hoặc NULL
nếu tất cả các tham số đều rỗng, ví dụ:
SELECT IFNULL('some value', 'some other value');
-> returns 'some value'
SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'
SELECT COALESCE(NULL, 'some other value');
-> returns 'some other value' - equivalent of the IFNULL function
SELECT COALESCE(NULL, 'some value', 'some other value');
-> returns 'some value'
SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'
CẬP NHẬT: MSSQL kiểm tra loại và tham số chặt chẽ hơn. Hơn nữa, nó không có IFNULL
nhưng thay vào đó là ISNULL
, cần biết các loại đối số. Do đó:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Ngoài ra COALESCE
hàm trong MSSQL yêu cầu ít nhất một tham số khác rỗng, do đó:
SELECT COALESCE(NULL, NULL, NULL, NULL, NULL);
-> results in an error
SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'