IFNULL、C
OALESCE 和 NULLIF这三个函数都是 MySQL 中处理惩罚 NULL 值的函数,但它们的
功能和利用场景有所差别:
1. IFNULL(expr, fallback)
功能:两值处理惩罚,专为替换 NULL 设计
- 假如 expr 不是 NULL,返回 expr
- 假如 expr 是 NULL,返回 fallback
特点:
- 只能处理惩罚一个表达式是否为 NULL 的环境
- 只能提供一个备用值
示例:
- SELECT IFNULL(NULL, '备用值'); -- 返回 '备用值'
- SELECT IFNULL('实际值', '备用值'); -- 返回 '实际值'
典范用途:
- 表现用户昵称,假如为 NULL 则表现"匿名用户"
- SELECT IFNULL(nickname, '匿名用户') FROM users;
2. COALESCE(expr1, expr2, ...)
功能:多值选择,返回参数列表中第一个非 NULL 的值
特点:
- 可以担当多个参数(至少两个)
- 从左到右查抄,返回第一个非 NULL 值
- 假如全部参数都是 NULL,则返回 NULL
示例:
- SELECT COALESCE(NULL, NULL, '第三个值', '第四个值'); -- 返回 '第三个值'
- SELECT COALESCE(NULL, NULL, NULL); -- 返回 NULL
典范用途:
- SELECT COALESCE(mobile, home_phone, work_phone, '无联系方式') FROM contacts;
3. NULLIF(expr1, expr2)
功能:相当性判断,用于特定环境返回 NULL
特点:
- 比较两个表达式
- 假如相当则返回 NULL
- 假如不相当则返回第一个表达式
示例:
- SELECT NULLIF(5, 5); -- 返回 NULL
- SELECT NULLIF(5, 10); -- 返回 5
典范用途:
- SELECT amount / NULLIF(total, 0) FROM accounts;
对比总结表
函数参数数目返回值规则典范用途IFNULL(expr, fallback)2expr非NULL则返回expr,否则返回fallback单个NULL值替换COALESCE(expr1, expr2,...)≥2返回第一个非NULL参数多备选值选择NULLIF(expr1, expr2)2expr1=expr2返回NULL,否则返回expr1
安全计算,特定条件返回NULL
利用建议
- 当只必要处理惩罚单个大概为NULL的字段时 → 用IFNULL
- 当有多个备选字段必要依次查抄时 → 用COALESCE
- 当必要特定条件下返回NULL时 → 用NULLIF
- 留意:在复杂表达式中,这些函数大概会影响性能,应合理利用
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。