使用SELECT语句在MySQL中替换NULL值有哪些不同的方法?
使用SELECT语句替换NULL值有很多选项。您可以使用CASE语句、IFNULL()或COALESCE()
情况1: - 使用IFNULL()
IFNULL()的语法如下 –
SELECT IFNULL(yourColumnName,'yourValue') AS anyVariableName from yourTableName;
情况2: - 使用COALESCE()
COALESCE()的语法如下 –
SELECT COALESCE(yourColumnName,'yourValue') AS anyVariableName from yourTableName;
情况3: - 使用CASE语句。
CASE语句的语法如下。
SELECT CASE
WHEN yourColumnName IS NULL THEN 'yourValue'
ELSE yourColumnName END AS anyVariableName FROM yourTableName
为了理解我们上面讨论的内容,让我们创建一张表。创建表的查询语句如下 –
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)
使用insert命令在表中插入一些记录。查询语句如下 –
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)
使用select语句显示表中的所有记录。查询语句如下 –
mysql> select *from ReplaceNULLDemo;
以下是输出结果 –
+----+-------+-------+
| 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)
现在让我们将NULL值转换为0。
情况1: - 使用IFNULL()
查询语句如下 –
mysql> select ifnull(Marks,0) as ReplacementOfNULLWith0 from ReplaceNULLDemo;
以下是显示NULL替换为0的输出结果 –
+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
| 90 |
| 0 |
| 0 |
| 67 |
| 78 |
| 0 |
| 98 |
+------------------------+
7 rows in set (0.00 sec)
情况2: -使用COALESCE()
查询语句如下 –
mysql> select coalesce(Marks,0) as ReplacementOfNULLWith0 from ReplaceNULLDemo;
以下是显示NULL替换为0的输出结果 –
+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
| 90 |
| 0 |
| 0 |
| 67 |
| 78 |
| 0 |
| 98 |
+------------------------+
7 rows in set (0.00 sec)
情况3: - 使用CASE语句。
查询语句如下 –
mysql> 选择 case
-> 当Marks为空时,则为0
-> 否则为Marks作为替代NULL
-> 来自 ReplaceNULLDemo的
->
以下是显示 NULL 用 0 替换后的输出-
+ ------------------------ +
|ReplacementOfNULLWith0 |
+------------------------+
| 90 |
| 0 |
| 0 |
| 67 |
| 78 |
| 0 |
| 98 |
+ ------------------------ +
共7行(0.00秒)
阅读更多:MySQL 教程