SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Cách hoạt động của SQLite Nullif ()

SQLite nullif() function là một chức năng tiện dụng cho phép bạn coi các giá trị nhất định là NULL khi được yêu cầu.

Không nên nhầm lẫn với ifnull() hàm làm ngược lại - cho phép bạn coi các giá trị NULL như một thứ khác.

nullif() hàm chấp nhận hai đối số và trả về đối số đầu tiên của nó nếu các đối số khác nhau và NULL nếu các đối số giống nhau.

Cú pháp

Cú pháp như sau:

nullif(X,Y)

Hàm tìm kiếm các đối số của nó từ trái sang phải để tìm đối số xác định một hàm đối chiếu và sử dụng hàm đối chiếu đó cho tất cả các so sánh chuỗi. Nếu không có đối số nào xác định hàm đối chiếu thì BINARY được sử dụng.

Ví dụ

Đây là một ví dụ cơ bản để chứng minh.

SELECT 
  nullif(123,0),
  nullif(0,0),
  nullif(123,123);

Kết quả:

nullif(123,0)  nullif(0,0)  nullif(123,123)
-------------  -----------  ---------------
123                                        

Trong cột đầu tiên, hai giá trị khác nhau, vì vậy giá trị đầu tiên được trả về.

Trong cột thứ hai, cả hai giá trị đều giống nhau, vì vậy NULL được trả về.

Điều này cũng đúng đối với cột thứ ba - cả hai giá trị đều giống nhau, vì vậy NULL được trả về.

Một ví dụ thực tế

Dưới đây là ví dụ về cơ sở dữ liệu chứng minh cách sử dụng thiết thực hơn cho nullif() chức năng.

Lấy bảng sau được gọi là Sản phẩm :

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                

Chúng ta có thể thấy rằng hai sản phẩm có giá bằng không. Một sản phẩm khác có giá ĐẦY ĐỦ.

Bây giờ, hãy tưởng tượng chúng ta muốn tìm xem có bao nhiêu sản phẩm có giá dương. Nói cách khác, chúng tôi không muốn đưa vào các sản phẩm có giá hoặc bằng 0 (hoặc KHÔNG ĐỦ cho vấn đề đó).

Để làm điều này, chúng ta có thể sử dụng nullif() kết hợp với count() chức năng.

SELECT count(nullif(Price, 0.00)) 
FROM Products;

Kết quả:

3

Chúng tôi nhận được 3 như mong đợi, đó là chính xác số lượng hàng có giá trị dương trong Giá cột.

Điều này hoạt động vì count() hàm chỉ đếm các giá trị không phải NULL. Bằng cách chuyển đổi số 0 thành NULL, chúng tôi có thể bỏ qua những giá trị đó trong tính toán của mình.

Đây lại là nó mà không có nullif() chức năng.

SELECT count(Price) 
FROM Products;

Kết quả:

5

Vì vậy, trong trường hợp này, nó bao gồm số tiền bằng 0 và chúng ta nhận được 5. Nó vẫn bỏ qua hàng 6 vì hàng đó thực sự có giá trị NULL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android SQLiteOpenHelper:Tại sao phương thức onCreate () không được gọi?

  2. Làm thế nào để chuyển đổi trang tính excel thành cơ sở dữ liệu của sqlite trong Android

  3. Tự động tăng giá trị 'id' khi chèn vào sqlite

  4. Cách Unicode () hoạt động trong SQLite

  5. sqlite get trường với hơn 2 MB