2011-08-30 43 views
11

Tôi đang chọn tối đa cột từ bảng. Nhưng có một vấn đề: nếu không có hàng trong bảng, nó trả về null.Có chức năng nào tương đương với chức năng Oracle NVL trong Mysql không?

Tôi muốn sử dụng hàm sẽ trả về một giá trị nhất định nếu kết quả bằng không. Ví dụ với Oracle có hàm NVL cho một giá trị nhất định nếu cột là null. Có một chức năng tương đương trong MySQL?

Trả lời

16
select coalesce(column_name, 'NULL VALUE') from the_table 
+3

Đây là phiên bản tiêu chuẩn SQL của NVL và cũng hoạt động trong Oracle (kể từ 9i, tôi tin). – Thilo

+0

Câu hỏi hỏi _ "Nhưng có một vấn đề: nếu không có hàng trong bảng, nó trả về null." _ Tuy nhiên, coalesce không giải quyết được điều này - nếu không có hàng nào được trả về, thì không có hàng nào được trả về. Tất cả nó làm là đảm bảo một giá trị không null cho một cột nhất định * cho một số hàng được trả về * Nhưng sau đó, không nvl trong oracle :) – Adam

+0

@Adam. Hàm tổng hợp 'max' sẽ trả về một hàng duy nhất (có null trong đó) ngay cả khi không có hàng nào trong bảng. Tất cả các coalesce nào (và tất cả các câu hỏi được hỏi về) là thay đổi null thành một giá trị mặc định. – Thilo

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