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ư nvl
và isnull
. (Có một số điểm khác biệt quan trọng, coalesce
có 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 isnull
khớ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 NVL
luô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 NVL2
như 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 .
COALESCE
là 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.