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

存储过程WHERE子句仅返回两类预期结果之一的技术求助

问题分析与解决方案

首先看你怀疑的那行条件:and (c.OurReference like 'P00%' or c.OurReference = 'HEA%'),这里的问题很明显——你对HEA%用了**等于号(=)**而不是LIKE!

  • LIKE 'P00%'是模糊匹配逻辑,会返回所有以P00开头的OurReference值
  • 但= 'HEA%'是精确匹配,它只会找那些**完全等于HEA%**的记录(也就是字符串本身就是HEA加一个百分号),而不是以HEA开头的记录

修复方法

把等于号改成LIKE,修改后的条件应该是:

and (c.OurReference like 'P00%' or c.OurReference like 'HEA%')

完整修改后的存储过程WHERE子句片段

where (Shifts1 = 'y' or Shifts2 = 'y' or s.Rates is not null or s.Breaks is not null)
and (c.OurReference like 'P00%' or c.OurReference like 'HEA%')
and C.ClientID in (select objectid from SectorObjects where SectorId in (58, 59, 60, 61, 62, 63, 64, 65, 66, 47 ))

额外提示(针对SQL新手)

  • LIKE操作符必须配合通配符(比如%匹配任意长度的任意字符、_匹配单个任意字符)才能实现模糊匹配
  • 如果你的数据库排序规则是区分大小写的,可能还需要注意HEA的大小写是否和数据一致。比如如果数据里是hea开头,你写HEA%可能匹配不到,这种情况可以用LOWER(c.OurReference) LIKE 'hea%'来统一转换成小写匹配

内容的提问来源于stack exchange,提问作者A.Chandler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:06:07