详情

愛在花開的季節 Lv.8

关注
IFNULL、COALESCE 和 NULLIF这三个函数都是 MySQL 中处理惩罚 NULL 值的函数,但它们的功能和利用场景有所差别:
1. IFNULL(expr, fallback)

功能:两值处理惩罚,专为替换 NULL 设计

  • 假如 expr 不是 NULL,返回 expr
  • 假如 expr 是 NULL,返回 fallback
特点

  • 只能处理惩罚一个表达式是否为 NULL 的环境
  • 只能提供一个备用值
示例
  1. SELECT IFNULL(NULL, '备用值');  -- 返回 '备用值'
  2. SELECT IFNULL('实际值', '备用值'); -- 返回 '实际值'
典范用途

  • 表现用户昵称,假如为 NULL 则表现"匿名用户"
  1. SELECT IFNULL(nickname, '匿名用户') FROM users;
2. COALESCE(expr1, expr2, ...)

功能:多值选择,返回参数列表中第一个非 NULL 的值
特点

  • 可以担当多个参数(至少两个)
  • 从左到右查抄,返回第一个非 NULL 值
  • 假如全部参数都是 NULL,则返回 NULL
示例
  1. SELECT COALESCE(NULL, NULL, '第三个值', '第四个值'); -- 返回 '第三个值'
  2. SELECT COALESCE(NULL, NULL, NULL); -- 返回 NULL
典范用途

  • 优先表现多种接洽方式中的有用信息
  1. SELECT COALESCE(mobile, home_phone, work_phone, '无联系方式') FROM contacts;
3. NULLIF(expr1, expr2)

功能:相当性判断,用于特定环境返回 NULL
特点

  • 比较两个表达式
  • 假如相当则返回 NULL
  • 假如不相当则返回第一个表达式
示例
  1. SELECT NULLIF(5, 5); -- 返回 NULL
  2. SELECT NULLIF(5, 10); -- 返回 5
典范用途

  • 安全除法(防止除以零)
  1. 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企服之家,中国第一个企服评测及商务社交产业平台。
38阅读
0回复

暂无评论,点我抢沙发吧