Câu trả lời:
coalesceđược hỗ trợ trong cả Oracle và SQL Server và phục vụ về cơ bản cùng một chức năng như nvlvà isnull. (Có một số điểm khác biệt quan trọng, coalescecó thể nhận một số lượng đối số tùy ý và trả về đối số không rỗng đầu tiên. Kiểu trả về cho isnullkhớp với kiểu của đối số đầu tiên, không đúng với coalesce, ít nhất là trên SQL Server.)
COALESCE, có một lợi ích quan trọng hơn NVL: nó thực hiện đánh giá phím tắt, trong khi NVLluôn đánh giá cả hai tham số. So sánh COALESCE(1,my_expensive_function)với NVL(1,my_expensive_function).
COALESE()chức năng là tuyệt vời và bạn có thể đọc về nó trên MSDOC> liên hiệp - cú pháp này cùng hoạt động trên Oracle. Nếu dữ liệu của bạn có chuỗi rỗng thay vì NULLS bạn có thể cần một cái gì đó như thế này: COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField".
Thay vì ISNULL(), sử dụng NVL().
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
Cũng sử dụng NVL2như bên dưới nếu bạn muốn trả về giá trị khác từ field_to_check:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
Cách sử dụng: ORACLE / PLSQL: NVL2 FUNCTION
Bạn có thể sử dụng điều kiện if x is not null then.... Nó không phải là một chức năng. Ngoài ra còn có NVL()chức năng, một ví dụ điển hình về cách sử dụng ở đây: chức năng NVL ref .
COALESCElà ANSI, được hỗ trợ bởi Postgres, MySQL ... Cảnh báo duy nhất là nó không nhất thiết phải hoạt động nhanh như cú pháp gốc.