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

MySQL查询判断位标志位设置状态的语句错误排查

错误原因

你编写的查询中,校验32标志位未设置的条件逻辑完全不符合位运算的校验规则:

  • 32 != quest_template.Flag的作用是判断Flag字段的整体整数值不等于32,而非判断32对应的二进制位未启用。只要Flag同时包含其他位的数值,哪怕32对应的位已经被设置,这个条件也会返回真,因此无法实现你要的校验效果。

正确实现方案

位标志的状态校验统一使用按位与(&)运算即可:

  • 校验某一位已设置:对应位值 & Flag != 0,MySQL中非0值会被识别为真,也可以简写为对应位值 & Flag
  • 校验某一位未设置:对应位值 & Flag = 0

修正后的查询语句如下:

SELECT * FROM quest_template
WHERE quest_template.ID > 0
  AND (64 & quest_template.Flag) != 0
  AND (32 & quest_template.Flag) = 0;

你可以用你给出的当前值测试验证逻辑:

  • 计算64 & 824183885,结果为64(非0,符合64位已设置的要求)
  • 计算32 & 824183885,结果为0则说明32位未设置,符合筛选要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:09:03