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

如何在SQL WHERE子句中根据输入参数实现条件过滤?

解决SQL WHERE子句的条件判断问题

你的原代码逻辑存在问题:当前写法会导致无论传入的参数是什么,只要reg_number='13352'就会被查询出来,这不符合你“仅当参数不是'22162'时才过滤reg_number='13352'”的需求。

正确的实现方式

可以通过两种简洁的方式实现你的需求:

方式一:使用AND/OR组合条件

直接根据传入参数的值分支判断:

SELECT * FROM car_details
WHERE 
  -- 当参数为'22162'时,匹配reg_number和mdate
  (
    ? = '22162' 
    AND reg_number = '22162' 
    AND mdate = '2023-10-20'
  )
  OR 
  -- 当参数不为'22162'时,仅匹配reg_number='13352'
  (
    ? != '22162' 
    AND reg_number = '13352'
  )

注意:如果你的数据库不支持!=,可以替换为<>。

方式二:使用CASE表达式

用CASE统一处理reg_number的匹配规则,再附加mdate的条件:

SELECT * FROM car_details
WHERE 
  reg_number = CASE 
    WHEN ? = '22162' THEN '22162' 
    ELSE '13352' 
  END
  AND 
  -- 仅当参数为'22162'时,才需要验证mdate
  (
    ? != '22162' 
    OR mdate = '2023-10-20'
  )

逻辑说明

两种方式的核心都是根据传入参数的值,动态切换过滤规则:

  • 当参数是'22162'时,必须同时满足reg_number='22162'和mdate='2023-10-20'
  • 当参数不是'22162'时,仅需要满足reg_number='13352'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:23:21