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

如何在WHERE IN字符串列表条件中使用SQL SUBSTRING去除mem前缀

实现方案

方案1:优先推荐(修改成本最低,语法简洁)

你只需要先批量把IN列表中所有值的mem前缀删除,再对pnumber字段做前缀截取即可,通用语法如下:

WHERE
SUBSTRING(pnumber, 4) IN ('1234', '2345', '8978')

说明:mem为固定3位前缀,所以SUBSTRING从第4位开始截取,即可得到去除前缀后的内容,该语法适配MySQL、SQL Server、Oracle等绝大多数主流数据库,部分数据库也可简写为SUBSTR(pnumber, 4),效果完全一致。

方案2:无需修改现有IN列表(适合不想批量处理数百条条目的场景)

如果你不想改动已经整理好的带mem前缀的IN列表,也可以用以下写法,强制用SUBSTRING完成前缀匹配逻辑:

WHERE
SUBSTRING(pnumber, 4) IN (
  SUBSTRING('mem1234', 4),
  SUBSTRING('mem2345', 4),
  SUBSTRING('mem8978', 4)
)

注意:该方案需要给每个IN条目都加上SUBSTRING处理,修改量更大,且无法利用pnumber字段的索引,性能低于方案1,非特殊情况不推荐使用。

内容的提问来源于stack exchange,提问作者Dean-O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:48:00