You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL WHERE子句中字段的IF ELSE逻辑:current_owner为空时匹配createdBy

你的原写法存在两个核心问题:

  1. SQL中判断空值不能使用== null语法,必须使用IS NULL,NULL和任意值做相等比较的结果都是UNKNOWN,会导致条件无法匹配
  2. 不同数据库的分支判断语法有差异,你可以根据实际使用的数据库选择下面的实现方案:

  • 通用全数据库兼容方案(支持MySQL、PostgreSQL、Oracle、SQL Server等所有主流关系型数据库):使用CASE WHEN分支
SELECT * 
FROM wns 
WHERE CASE 
    WHEN current_owner IS NULL THEN createdBy = ?
    ELSE current_owner = ?
END;

说明:两个占位符?需要传入同一个目标值即可

  • MySQL专属简化方案:使用IF函数
SELECT *
FROM wns
WHERE IF(current_owner IS NULL, createdBy = ?, current_owner = ?);
  • 最简洁通用方案:使用COALESCE函数(支持所有主流数据库,仅需传1个参数)
SELECT *
FROM wns
WHERE COALESCE(current_owner, createdBy) = ?;

说明:COALESCE函数会返回参数列表中第一个非空的值,当current_owner为NULL时自动取createdBy的值做匹配,完全符合你的业务逻辑


内容的提问来源于stack exchange,提问作者Rajan Balodi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:39:00