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

SQL中针对单列的多个OR等值WHERE条件有没有简写方式?

简洁写法实现方案

你要的简化逻辑可以直接用SQL标准语法里的IN操作符实现,完全可以替代反复写UPPER(column) = 某值拼接OR的冗长写法。

正确等价写法

原来的多OR拼接语句:

SELECT * 
FROM users 
WHERE UPPER(column) = 'STRING1'  
   OR UPPER(COLUMN) = 'STRING2' 
   OR UPPER(COLUMN) = 'STRING3' 
   OR ... 
   OR UPPER(COLUMN) = 'ANYSTRING';

可以简化为如下形式,执行逻辑和原语句完全等价:

SELECT * 
FROM users 
WHERE UPPER(column) IN ('STRING1', 'STRING2', 'STRING3', ... , 'ANYSTRING');

注意事项

  • IN后面的匹配值列表用英文逗号分隔,不需要写OR,只要列值在这个列表里就会满足匹配条件,和你预期的「等于列表中任意一个值就命中」的逻辑完全一致。
  • 你设想的UPPER(column) = ('STRING1' OR 'STRING2' OR ...)写法不符合SQL语法规范,括号内的OR会被解析为布尔逻辑运算,无法实现等值匹配效果,不要使用。
  • 这种写法是ANSI SQL标准语法,所有主流关系型数据库(MySQL、PostgreSQL、Oracle、SQL Server等)都原生支持,不存在兼容性问题。
  • 如果后续匹配值数量特别多,还可以根据场景把匹配值存到临时表做JOIN匹配,但就简化日常多值OR等值判断的需求来说,IN是最方便直接的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:36:18