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

MySQL ISNULL () Giải thích

Trong MySQL, ISNULL() hàm cho phép chúng tôi kiểm tra xem giá trị có phải là null hay không. Nếu nó là null , rồi đến 1 được trả lại, nếu không thì 0 được trả lại.

Cú pháp

ISNULL(expr)

Ví dụ

Dưới đây là một ví dụ đơn giản để chứng minh:

SELECT ISNULL( null );

Kết quả:

1

Trong trường hợp này, biểu thức là null và vì vậy đầu ra là 1 .

Đây là với một không null giá trị:

SELECT ISNULL( 'Cake' );

Kết quả:

0

Lần này kết quả là 0 (bởi vì biểu thức không phải là null ).

Biểu thức

ISNULL() kiểm tra kết quả của bất kỳ biểu thức nào. Vì vậy, nếu chúng ta làm như sau, ví dụ:

SELECT ISNULL( 3 / 0 );

Chúng tôi nhận được điều này:

1

Vì vậy, mặc dù chúng tôi không chỉ định null là đối số, kết quả của biểu thức là null và vì vậy ISNULL() trả về 1 .

Điều này có thể được chứng minh rõ ràng hơn với ví dụ tiếp theo:

SELECT 
    3 / 0,
    ISNULL( 3 / 0 );

Kết quả:

+-------+-----------------+
| 3 / 0 | ISNULL( 3 / 0 ) |
+-------+-----------------+
|  NULL |               1 |
+-------+-----------------+
1 row in set, 2 warnings (0.00 sec)

Trong cột đầu tiên, chúng ta có thể thấy rằng bản thân phép tính đã dẫn đến giá trị null và do đó cột thứ hai trả về 1 .

Trong khi chúng tôi đang ở đó, đây là các cảnh báo:

SHOW WARNINGS

Kết quả:

+---------+------+---------------+
| Level   | Code | Message       |
+---------+------+---------------+
| Warning | 1365 | Division by 0 |
| Warning | 1365 | Division by 0 |
+---------+------+---------------+

Chúng tôi được cảnh báo rằng chúng tôi đã cố gắng chia cho 0 (dẫn đến giá trị rỗng).

Ví dụ về cơ sở dữ liệu

Giả sử chúng ta có một bảng cơ sở dữ liệu như sau:

SELECT * FROM Pets;

Kết quả:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
|     9 |         3 |       1 | Woof    | 2020-10-03 |
|    10 |         4 |       5 | Ears    | 2022-01-11 |
+-------+-----------+---------+---------+------------+

Đây là một truy vấn sử dụng ISNULL() chức năng chống lại bảng đó:

SELECT
    PetId,
    PetName,
    ISNULL( DOB ) AS "DOB is Missing?"
FROM Pets;

Kết quả:

+-------+---------+-----------------+
| PetId | PetName | DOB is Missing? |
+-------+---------+-----------------+
|     1 | Fluffy  |               0 |
|     2 | Fetch   |               0 |
|     3 | Scratch |               0 |
|     4 | Wag     |               0 |
|     5 | Tweet   |               0 |
|     6 | Fluffy  |               0 |
|     7 | Bark    |               1 |
|     8 | Meow    |               1 |
|     9 | Woof    |               0 |
|    10 | Ears    |               0 |
+-------+---------+-----------------+

Trong trường hợp đó, chúng tôi đã tạo một cột hiển thị 1 cho tất cả các vật nuôi không có bất kỳ thứ gì trong cột DOB của chúng.

Giả sử chúng tôi muốn trả lại tất cả vật nuôi không có ngày sinh được liệt kê (tức là DOB của chúng trường null ). Trong trường hợp này, chúng ta có thể làm như sau:

SELECT * FROM Pets
WHERE ISNULL(DOB) = 1;

Kết quả:

+-------+-----------+---------+---------+------+
| PetId | PetTypeId | OwnerId | PetName | DOB  |
+-------+-----------+---------+---------+------+
|     7 |         3 |       2 | Bark    | NULL |
|     8 |         2 |       4 | Meow    | NULL |
+-------+-----------+---------+---------+------+

Điều đó mang lại kết quả tương tự như làm như sau:

SELECT * FROM Pets
WHERE DOB IS NULL;

Kết quả:

+-------+-----------+---------+---------+------+
| PetId | PetTypeId | OwnerId | PetName | DOB  |
+-------+-----------+---------+---------+------+
|     7 |         3 |       2 | Bark    | NULL |
|     8 |         2 |       4 | Meow    | 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. Cách cấp tất cả các đặc quyền trên cơ sở dữ liệu trong MySQL

  2. PHP Lỗi nghiêm trọng:Không tìm thấy lớp 'PDO'

  3. Làm cách nào để thay đổi một cột và thay đổi giá trị mặc định?

  4. Giải pháp tốt nhất để tổng hợp kết nối cơ sở dữ liệu trong python là gì?

  5. Cách lưu trữ Ký tự Emoji trong Cơ sở dữ liệu MySQL