安全等于与函数兜底要点
- NULL 安全等于:两边都为 NULL 时返回真,一边 NULL 一边有值返回假
- 普通 = 在任一为 NULL 时返回未知,安全等于则给出确定真假
- IFNULL(列, 默认值) 只接两个参数,空就取默认值
- COALESCE(列1, 列2, ...) 返回第一个非空值,更灵活
- 展示给用户前用它们兜底,避免页面出现大片空白
- 安全等于能用 IS NULL 组合等价改写,不依赖特殊符号
安全等于与函数兜底示例
-- 把缺货商品的库存显示为 0
SELECT product_name, IFNULL(stock, 0) AS real_stock
FROM product;
-- 优先取现货价,没有再取原价,都没有显示 0
SELECT product_name,
COALESCE(promo_price, price, 0) AS final_price
FROM product;
-- 安全等于的等价思路:两者都为空 或 两者相等
SELECT * FROM staff
WHERE bonus IS NULL AND 0 IS NULL
OR bonus = 0;
避坑提醒:COALESCE 比 IFNULL 通用:前者是 SQL 标准,后者是 MySQL 特有,跨库项目优先 COALESCE。