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

SQL使用~运算符操作BIGINT字段报numeric类型无效错误如何解决

错误产生原因

你使用的常量576460752303423488未显式声明类型时,会被SQL解析器默认判定为*NUMERIC(数值型)*类型,而~位非运算符仅支持整数类数据类型(INT、BIGINT等)作为操作数,不支持NUMERIC类型,因此触发了操作数类型不兼容的报错。
即使你的字段attrEx本身是BIGINT类型,且常量数值本身落在BIGINT的取值范围内,未做类型声明时依然会按默认的NUMERIC类型处理,导致运算类型不匹配。

解决方案

只需要将操作的常量显式转换为BIGINT类型即可正常运算,不同数据库的适配写法如下:

SQL Server 适配方案

两种写法均可生效:

  1. 显式CAST转换
UPDATE [Table]
SET attrEx = attrEx & (~ CAST(576460752303423488 AS BIGINT))
WHERE attrEx != 0
  1. 常量后缀声明(直接声明为BIGINT类型常量)
UPDATE [Table]
SET attrEx = attrEx & (~ 576460752303423488L)
WHERE attrEx != 0

MySQL 适配方案

UPDATE `Table`
SET attrEx = attrEx & (~ CAST(576460752303423488 AS SIGNED))
WHERE attrEx != 0
-- 如果使用无符号BIGINT,将SIGNED替换为UNSIGNED即可

预验证建议

执行UPDATE之前可先运行查询测试运算结果,避免误修改数据:

-- SQL Server 示例
SELECT attrEx, attrEx & (~ CAST(576460752303423488 AS BIGINT)) AS new_attrEx
FROM [Table]
WHERE attrEx != 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:15:05