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

Sự khác biệt giữa NullIf () và IfNull () trong SQLite

SQLite có một hàm được gọi là nullif() và một hàm khác được gọi là ifnull() , mỗi mục đích phục vụ một mục đích khác nhau.

  • nullif() cho phép bạn coi các giá trị nhất định là NULL. Bạn có thể coi nó là “trả về NULL nếu…”.
  • ifnull() cho phép bạn thay thế các giá trị NULL bằng một giá trị khác. Bạn có thể nghĩ về nó như là “nếu NULL, thì…”.

Vì vậy, về cơ bản chúng làm ngược lại với nhau. Một thay thế các giá trị NULL bằng một giá trị khác và một thay thế một giá trị khác bằng NULL.

Ví dụ

Trong một số trường hợp, cả hai hàm có thể trả về cùng một kết quả. Ví dụ:

SELECT
  nullif(1, 2),
  ifnull(1, 2);

Kết quả:

nullif(1, 2)  ifnull(1, 2)
------------  ------------
1             1           

nullif() hàm trả về một bản sao của đố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. Trong trường hợp này, các đối số khác nhau và nó trả về đối số đầu tiên.

ifnull() mặt khác, trả về một bản sao của đối số không phải NULL đầu tiên. Trong trường hợp này, cả hai đối số đều không phải NULL và do đó, đối số đầu tiên được trả về.

Với ví dụ sau, chúng ta bắt đầu thấy sự khác biệt giữa hai hàm này:

SELECT
  nullif(1, 1),
  ifnull(1, 1);

Kết quả:

nullif(1, 1)  ifnull(1, 1)
------------  ------------
              1           

nullif() hàm trả về NULL khi cả hai đối số giống nhau. Trong trường hợp này, cả hai đối số đều giống nhau và vì vậy nullif() đã thực hiện công việc của mình và trả về NULL.

ifnull() hàm trả về đối số không phải NULL đầu tiên và vì vậy trong trường hợp này, nó trả về đối số đầu tiên.

Thực tế là cả hai đối số đều giống nhau có nghĩa là không có gì đối với ifnull() . Nó chỉ trả về đối số không phải NULL đầu tiên. Có nói rằng, nếu cả hai đối số là NULL thì nó trả về NULL.

Hãy thử thêm một số NULL.

SELECT
  nullif(NULL, 1),
  ifnull(NULL, 1);

Kết quả:

nullif(NULL, 1)  ifnull(NULL, 1)
---------------  ---------------
                 1              

Trong trường hợp này, nullif() trả về NULL vì NULL là đối số đầu tiên (nhớ lại rằng nullif() trả về đối số đầu tiên của nó nếu cả hai đối số khác nhau).

ifnull() mặt khác trả về đối số không phải NULL đầu tiên của nó.

Đây là giao diện của nó nếu chúng ta thay đổi các đối số.

SELECT
  nullif(1, NULL),
  ifnull(1, NULL);

Kết quả:

nullif(1, NULL)  ifnull(1, NULL)
---------------  ---------------
1                1              

Cả hai đối số đều khác nhau và vì vậy nullif() trả về đối số đầu tiên.

Đối số đầu tiên không phải là NULL và vì vậy ifnull() trả lại nó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách bỏ qua các hàng vi phạm các ràng buộc khi chèn dữ liệu vào SQLite

  2. Làm cách nào để thêm số hàng trống cụ thể trong sqlite?

  3. Android SQlite không cập nhật dữ liệu

  4. Cách hoạt động của SQLite Min ()

  5. Những phương pháp nào có thể được sử dụng để quản lý các phiên bản khác nhau của cơ sở dữ liệu đã có từ trước?