1. IS NULL 运算符
在 MySQL 数据库中,当一个列或者一个表达式没有被赋值的时候,就可以用 IS NULL 运算符来判断该值是否为 NULL,即不存在任何值。该运算符返回布尔值(TRUE 或 FALSE)。
SELECT * FROM my_table WHERE my_column IS NULL;
该语句会返回 my_table 表中 my_column 列中值为 NULL 的所有行。
当我们需要查询一个列中是否存在 NULL 值时,使用 IS NULL 运算符是比较方便的。
2. ISNULL() 函数
ISNULL() 函数则是用于检测一个表达式是否为 NULL,如果是 NULL 返回另一个值,如果不是 NULL 返回表达式本身。
SELECT ISNULL(my_column, 'No Value') FROM my_table;
该语句会返回 my_table 表中 my_column 列的值,如果值为 NULL 则返回 'No Value'。
当我们需要替换 NULL 值时,ISNULL() 函数是比较有用的。
3. 区别
3.1 使用方式不同
IS NULL 运算符可以直接使用,而 ISNULL() 函数需要传入要判断的表达式。
3.2 返回值不同
IS NULL 运算符返回的是布尔值(TRUE 或 FALSE),而 ISNULL() 函数返回的是表达式本身或者另一个值(如果表达式为 NULL)。
3.3 适用场景不同
IS NULL 运算符适用于查询某一列是否存在 NULL 值,而 ISNULL() 函数适用于对 NULL 值进行替换或者对 NULL 值进行特殊处理。
4. 实例
假设我们有一个 students 表:
CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4.1 使用 IS NULL 运算符
我们需要查询 students 表中 score 列为 NULL 的所有记录,可以使用 IS NULL 运算符:
SELECT * FROM students WHERE score IS NULL;
运行结果如下:
id | name | age | score |
---|---|---|---|
1 | Tom | 18 | |
2 | Jerry | 20 |
4.2 使用 ISNULL() 函数
我们需要查询 students 表中 score 列的值,如果值为 NULL 则替换为 0,可以使用 ISNULL() 函数:
SELECT ISNULL(score, 0) FROM students;
运行结果如下:
ISNULL(score, 0) |
---|
80 |
90 |
0 |
0 |
从结果可以看出,ISNULL() 函数将 NULL 值替换成了 0。
5. 总结
IS NULL 运算符和 ISNULL() 函数虽然都可以用于 NULL 值的处理,但是使用方式、返回值和适用场景都不相同。需要根据实际需求来选择使用哪种方式。