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

SQL查询异常排查:筛选2007年前入职且奖金≥8.00的员工出错

问题出在奖金条件的写法上!

嘿,我一眼就瞅到问题根源了:你错误地用Access专属的日期分隔符#来包裹数值型的奖金值8.00,这直接导致数据库的判断逻辑跑偏了。

为啥会出问题?

  • 在Microsoft Access的SQL语法里,#是专门用来标记日期/时间类型值的,比如你写的#01/01/2007#就完全正确,因为EMP_HIREDATE是日期字段。
  • 但EMP_PCT是数值类型(不管是小数还是百分比数值),你把8.00用#包起来后,数据库会试图把它解析成日期——显然8.00不是合法的日期格式,数据库会做错误的隐式转换,最终的判断结果和你预期的“奖金不低于8.00”完全不符,自然会把不符合条件的员工也捞出来。

修正后的正确SQL语句

把奖金数值两边的#去掉,直接用纯数值写法就行:

SELECT EMP_NUM, EMP_LNAME, EMP_FNAME, EMP_HIREDATE, EMP_PCT 
FROM employee 
WHERE EMP_HIREDATE < #01/01/2007# 
  AND EMP_PCT >= 8.00;

额外提醒

如果你的EMP_PCT字段存储的是百分比比例(比如8%存成0.08),那你得把条件改成EMP_PCT >= 0.08——不过根据你的描述,应该是直接存的8.00这种数值,所以上面的修正就够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:37:33