SQLite ifnull()
cho phép bạn thay thế các giá trị NULL bằng một giá trị khác.
Nó nhận hai đối số và trả về bản sao của đối số không phải NULL đầu tiên hoặc NULL nếu cả hai đối số đều NULL.
ifnull()
hàm tương đương với coalesce()
với hai đối số.
Ví dụ đơn giản
Dưới đây là một ví dụ đơn giản để chứng minh khái niệm này.
SELECT
ifnull(123, 0),
ifnull(NULL, 0);
Kết quả:
ifnull(123, 0) ifnull(NULL, 0) -------------- --------------- 123 0
Cột thứ hai là NULL và như vậy 0 đã được trả lại thay thế.
Ví dụ về cơ sở dữ liệu
Ví dụ này sử dụng ifnull()
trong một truy vấn cơ sở dữ liệu. Điều này giải thích cách ifnull()
có thể hữu ích khi truy vấn dữ liệu có thể chứa giá trị NULL.
Lấy bảng sau làm ví dụ:
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Widget Stick 89.75 3 Foo Cap 11.99 4 Free Widget 0.0 5 Free Foobar 0.0 6 Free Beer
Hầu hết các sản phẩm đều có giá, nhưng giá của Bia miễn phí là NULL.
Chúng tôi có thể thay đổi giá trị này thành một giá trị mà chúng tôi chọn.
SELECT
ProductName,
ifnull(Price, 0.0)
FROM Products;
Kết quả:
ProductName ifnull(Price, 0.0) ------------- ------------------ Widget Holder 139.5 Widget Stick 89.75 Foo Cap 11.99 Free Widget 0.0 Free Foobar 0.0 Free Beer 0.0
Bây giờ nó có cùng giá với các sản phẩm miễn phí khác.
Giá trị thay thế không nhất thiết phải là một số. Bạn cũng có thể thay thế nó bằng một chuỗi.
SELECT
ProductName,
ifnull(Price, 'FREE!')
FROM Products;
Kết quả:
ProductName ifnull(Price, 'FREE!') ------------- ---------------------- Widget Holder 139.5 Widget Stick 89.75 Foo Cap 11.99 Free Widget 0.0 Free Foobar 0.0 Free Beer FREE!
Khi cả hai đối số đều KHÔNG ĐẦY ĐỦ
Nếu cả hai đối số đều NULL, thì NULL được trả về.
SELECT ifnull(NULL, NULL);
Kết quả:
ifnull(NULL, NULL) ------------------