2010-07-09 33 views
34

Tôi có một tuyên bố chọn nơi tôi muốn thực hiện chọn có điều kiện như thế nàymysql IFNULL ELSE

IFNULL(field_a,field_a,feild_b) 

để nó kiểm tra lĩnh vực a nếu a là null thì chọn sẽ là lĩnh vực b

là khả thi ?

Trả lời

68

Sử dụng COALESCE:

SELECT COALESCE(field_a, field_b) 

liên hiệp là một chức năng tiêu chuẩn ANSI mà trả về giá trị null đầu tiên từ danh sách các cột quy định, chế biến các cột từ trái sang phải. Vì vậy, trong ví dụ, nếu field_a là null, field_b giá trị sẽ được hiển thị. Tuy nhiên, hàm này sẽ trả về NULL nếu không có giá trị không null từ các cột được chỉ định.

Nó hỗ trợ trên MySQL (Tôi đã sử dụng nó trên 4.1), SQL Server (kể từ V2000), Oracle 9i + ...

+3

Tôi ủng hộ việc sử dụng các liên hiệp là tốt. –

+0

Giải thích rõ ràng về cách hoạt động của chức năng ... Cảm ơn! Đã cập nhật liên kết bị hỏng. – Andrew

34

Có, nhưng nó chỉ là hai tham số:

IFNULL(field_a,field_b) 

Nếu field_a không phải là null, nó sẽ được trả lại. Nếu không, field_b sẽ được trả lại.

tham khảo: IFNULL

28

và một cách khác để da mèo (linh hoạt cho không chỉ so sánh null) ...

select if(field_a is not null, field_a, field_b) from... 
+1

Câu trả lời hay nhất. Cho phép làm 'Chọn if (tên không phải là null, CONCAT ('name is:', name), '');' – Apolo

+0

'chọn IFNULL (cột, 'mặc định')' cũng hoạt động. Xem tại đây: http://sqlfiddle.com/#!9/14b752/1/0 – Arda

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