Computer >> Máy Tính >  >> Lập trình >> MySQL

Các cách khác nhau để thay thế các giá trị null trong MySQL bằng cách sử dụng câu lệnh SELECT là gì?


Có rất nhiều tùy chọn có sẵn để thay thế các giá trị NULL bằng cách sử dụng câu lệnh select. Bạn có thể sử dụng câu lệnh CASE hoặc IFNULL () hoặc COALESCE ()

Trường hợp 1 - Sử dụng IFNULL ()

Cú pháp của IFNULL () như sau -

SELECT IFNULL(yourColumnName,’yourValue’) AS anyVariableName from yourTableName;

Trường hợp 2 - Sử dụng COALESCE ()

Cú pháp của COALESCE () như sau -

SELECT COALESCE(yourColumnName,’yourValue’) AS anyVariableName from yourTableName;

Trường hợp 3 - Sử dụng câu lệnh CASE

Cú pháp của câu lệnh CASE.

SELECT CASE
WHEN yourColumnName IS NULL THEN ‘yourValue’
ELSE yourColumnName END AS anyVariableName FROM yourTableName

Để hiểu những gì chúng ta đã thảo luận ở trên, hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table ReplaceNULLDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(10),
   -> Marks int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.62 sec)

Chèn một số bản ghi trong bảng bằng lệnh insert. Truy vấn như sau -

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Larry',90);
Query OK, 1 row affected (0.16 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Carol',NULL);
Query OK, 1 row affected (0.17 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('David',NULL);
Query OK, 1 row affected (0.14 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Bob',67);
Query OK, 1 row affected (0.17 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Sam',78);
Query OK, 1 row affected (0.19 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('Mike',NULL);
Query OK, 1 row affected (0.19 sec)

mysql> insert into ReplaceNULLDemo(Name,Marks) values('John',98);
Query OK, 1 row affected (0.16 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from ReplaceNULLDemo;

Sau đây là kết quả -

+----+-------+-------+
| Id | Name  | Marks |
+----+-------+-------+
|  1 | Larry |    90 |
|  2 | Carol |  NULL |
|  3 | David |  NULL |
|  4 | Bob   |    67 |
|  5 | Sam   |    78 |
|  6 | Mike  |  NULL |
|  7 | John  |    98 |
+----+-------+-------+
7 rows in set (0.00 sec)

Bây giờ chúng ta hãy chuyển đổi giá trị NULL thành 0.

Trường hợp 1 - Sử dụng IFNULL ()

Truy vấn như sau -

mysql> select ifnull(Marks,0) as ReplacementOfNULLWith0 from ReplaceNULLDemo;

Sau đây là đầu ra hiển thị NULL được thay thế bằng 0 -

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
|                     90 |
|                      0 |
|                      0 |
|                     67 |
|                     78 |
|                      0 |
|                     98 |
+------------------------+
7 rows in set (0.00 sec)

Trường hợp 2 - Sử dụng COALESCE ()

Truy vấn như sau -

mysql> select coalesce(Marks,0) as ReplacementOfNULLWith0 from ReplaceNULLDemo;

Sau đây là đầu ra hiển thị NULL được thay thế bằng 0 -

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
|                     90 |
|                      0 |
|                      0 |
|                     67 |
|                     78 |
|                      0 |
|                     98 |
+------------------------+
7 rows in set (0.00 sec)

Trường hợp 3 - Sử dụng câu lệnh CASE.

Truy vấn như sau -

mysql> select case
   -> when Marks is null then 0
   -> else Marks end as ReplacementOfNULLWith0
   -> from ReplaceNULLDemo;

Sau đây là đầu ra hiển thị NULL được thay thế bằng 0 -

+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
|                     90 |
|                      0 |
|                      0 |
|                     67 |
|                     78 |
|                      0 |
|                     98 |
+------------------------+
7 rows in set (0.00 sec)