SQL表批量更新:如何简化含数百个OR语句的WHERE子句?
替代大量OR语句的SQL写法及Excel拼接技巧
一、SQL层面优化:用IN子句替代重复OR
完全不用写几百个OR,直接用IN子句即可,语法更简洁,数据库执行效率也更高:
WHERE "ColumnA" IN ('X', 'Y', 'Z', ...)
如果ColumnA是数字类型,去掉引号即可:
WHERE "ColumnA" IN (123, 456, 789, ...)
二、用Excel快速生成IN子句的参数列表
假设你的目标值在Excel的A列(A1到An),按以下步骤操作:
- 步骤1:给字符串值加引号(数字类型跳过此步)
在B1单元格输入公式:
下拉填充B列,给每个字符串值包裹双引号。=IF(A1="","",CHAR(34)&A1&CHAR(34)) - 步骤2:拼接成逗号分隔的字符串
在空白单元格(比如C1)输入TEXTJOIN函数:
把=TEXTJOIN(", ", TRUE, B1:Bn)Bn替换成你数据的最后一行行号,执行后就能得到直接可以放进IN()括号里的参数列表。 - 若你的Excel版本不支持
TEXTJOIN,可以复制B列内容到记事本,用替换功能把换行符换成,;也可以用PHONETIC函数(仅适用于纯文本内容)。
内容的提问来源于stack exchange,提问作者Dane Thomas
相关产品推荐
相关产品推荐

