Mysql中isnull,ifnull,nullif的用法
在 MySQL 中,ISNULL、IFNULL 和 NULLIF 都与空值(NULL)的判断或处理有关,但它们的用途和语义不同
1. ISNULL(expr) → 判断是否为 NULL
功能:返回 1(真)如果表达式为 NULL,否则返回 0(假)
示例:
SELECT ISNULL(NULL); -- 结果:1
SELECT ISNULL(123); -- 结果:0
SELECT ISNULL(name) FROM users;
2. IFNULL(expr1, expr2) → NULL 值替换
功能:如果 expr1 是 NULL,返回 expr2;否则返回 expr1。
常用于:空值替换为默认值
示例:
SELECT IFNULL(NULL, 'default'); -- 结果:'default'
SELECT IFNULL('hello', 'default'); -- 结果:'hello'
-- 示例:替换用户昵称为空时的默认名称
SELECT IFNULL(nickname, '匿名') AS display_name FROM users;
等价于:
CASE WHEN nickname IS NULL THEN '匿名' ELSE nickname END
3. NULLIF(expr1, expr2) → 相等则返回 NULL
功能:如果 expr1 = expr2,返回 NULL;否则返回 expr1
常用于:避免除零错误,或“两个值相同视为无效”的判断
示例:
SELECT NULLIF(5, 5); -- 结果:NULL
SELECT NULLIF(5, 3); -- 结果:5
-- 示例:除法避免除以 0
SELECT 10 / NULLIF(denominator, 0) FROM numbers;
总结
函数名 | 主要用途 | 示例 | 结果 |
---|---|---|---|
ISNULL(x) |
判断是否为 NULL | ISNULL(NULL) |
1 |
IFNULL(x, y) |
如果 x 是 NULL,返回 y | IFNULL(NULL, 'N/A') |
‘N/A’ |
NULLIF(x, y) |
如果 x = y,返回 NULL | NULLIF(5, 5) |
NULL |
上一篇: 几秒钟就充满电!科学
下一篇: 暂无数据