参考源
- 简单教程
- 菜鸟教程
SQL NULL 函数
SQL ISNULL()
、NVL()
、IFNULL()
和 COALESCE()
函数用于处理表中记录的 NULL
值
这些函数都类似,都实现类似的功能,但并不是每个数据库系统中实现了
下表列出了主流数据库系统中实现的函数
数据库系统 | 实现的函数 |
---|---|
MySQL/MariaDB | IFNULL() 、 COALESCE() |
Oracle | NVL() |
SQL Server / MS Access | ISNULL() |
示例数据
```sql
CREATE DATABASE IF NOT EXISTS hardy_db default character set utf8mb4 collate utf8mb4_0900_ai_ci;
USE hardy_db;
DROP TABLE IF EXISTS lesson;
CREATE TABLE lesson (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(32) default '',
views int(11) NOT NULL default '0',
created_at DATETIME
);
INSERT INTO lesson(id,name,views,created_at) VALUES
(1, 'Python 基础教程',981,'2017-04-18 13:52:03'),
(2, 'Scala 基础教程',73,'2017-04-18 16:03:32'),
(3, 'Ruby 基础教程',199,'2017-05-01 06:16:14'),
(4, NULL, 105,'2017-05-02 18:03:16');
使用
SELECT IFNULL('abc','bilibili'), IFNULL(NULL,'cccc');
运行结果如下:
mysql> SELECT IFNULL('abc','bilibili'), IFNULL(NULL,'cccc');
+--------------------------+---------------------+
| IFNULL('abc','bilibili') | IFNULL(NULL,'cccc') |
+--------------------------+---------------------+
| abc | cccc |
+--------------------------+---------------------+
1 row in set (0.00 sec)
示例数据
CREATE DATABASE IF NOT EXISTS hardy_db default character set utf8mb4 collate utf8mb4_0900_ai_ci;
USE hardy_db;
DROP TABLE IF EXISTS lesson_views;
CREATE TABLE lesson_views (
uniq bigint(20) primary key NOT NULL default '0' ,
lesson_name varchar(32) default '',
lesson_id int(11) default '0',
date_at int(11) NOT NULL default '0',
views int(11) default '0'
);
INSERT INTO lesson_views(uniq,lesson_name,lesson_id,date_at,views) VALUES
(20170511000001,'Python 基础教程',1,20170511,320),
(20170511000002,'Scala 基础教程', 2,20170511,22),
(20170511000003,'Ruby 基础教程', 3, 20170511,49),
(20170512000001,'Python 基础教程',1,20170512,220),
(20170512000002,'Scala 基础教程',2,20170512,12),
(20170512000003,'Ruby 基础教程',3,20170512,63),
(20170513000001,'Python 基础教程',1,20170513,441),
(20170513000002,'Scala 基础教程',2,20170513,39),
(20170513000003,'Ruby 基础教程',3,20170513,NULL);
IFNULL() 函数的使用
SELECT lesson_name,IFNULL( views,0) + 1000 FROM lesson_views;
运行结果如下:
mysql> SELECT lession_name,IFNULL( views,0) + 1000 FROM lession_views;
+---------------------+-------------------------+
| lession_name | IFNULL( views,0) + 1000 |
+---------------------+-------------------------+
| Python 基础教程 | 1320 |
| Scala 基础教程 | 1022 |
| Ruby 基础教程 | 1049 |
| Python 基础教程 | 1220 |
| Scala 基础教程 | 1012 |
| Ruby 基础教程 | 1063 |
| Python 基础教程 | 1441 |
| Scala 基础教程 | 1039 |
| Ruby 基础教程 | 1000 |
+---------------------+-------------------------+