2010-08-19 31 views

Trả lời

107

coalesce được hỗ trợ trong cả Oracle và SQL Server và phục vụ chủ yếu các chức năng tương tự như nvlisnull. (Có một số khác biệt quan trọng, coalesce có thể lấy số lượng đối số tùy ý, và trả về số thứ tự không rỗng đầu tiên. Kiểu trả về cho isnull khớp với loại đối số đầu tiên, điều đó không đúng cho coalesce, ít nhất là trên SQL Server .)

+9

+1: 'COALESCE' là ANSI, được hỗ trợ bởi Postgres, MySQL ... Thông báo trước duy nhất là nó không nhất thiết phải thực hiện nhanh như cú pháp gốc. –

+17

+1 cho 'COALESCE', có một lợi ích quan trọng so với' NVL': 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)'. –

6

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ó chức năng NVL(), một ví dụ điển hình về cách sử dụng tại đây: NVL function ref.

88

Thay vì ISNULL(), hãy 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 
+2

câu trả lời các câu hỏi một cách rõ ràng. –

20

Cũng sử dụng NVL2 như dưới đây nếu bạn muốn quay trở lại 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

Các vấn đề liên quan