COALESCE(a, b, c, ...) trả về đối số không NULL đầu tiên — dùng để đặt giá trị mặc định. NULLIF(a, b) trả về NULL nếu a = b, ngược lại trả về a — dùng để biến một giá trị "xấu" thành NULL.
Cặp này hay đi chung để chặn lỗi chia cho 0:
sql
SELECT
order_id,
COALESCE(discount, 0) AS discount, -- NULL -> 0
revenue / NULLIF(visits, 0) AS revenue_per_visit -- visits = 0 -> NULL, khong loi
FROM daily_stats;Nếu chỉ viết revenue / visits thì PostgreSQL ném division by zero và cả truy vấn hỏng; đổi mẫu số thành NULL khiến kết quả là NULL — một dòng báo cáo trống thay vì cả báo cáo lỗi.
Một dụng khác của NULLIF: chuẩn hoá chuỗi rỗng thành NULL khi nhập liệu từ form: NULLIF(trim(phone), '').
Lưu ý COALESCE đánh giá lười — dừng ở đối số không NULL đầu tiên, nên đặt biểu thức đắt tiền ở sau cùng.