我需要操作一个无符号整数乘以-1。
当我尝试它只是返回一个围绕最大可表示值的随机值。
在查询中转换结果。
SELECT CAST( fieldname * -1 AS SIGNED ) FROM ...
-- or
SELECT CONVERT ( fieldname * -1, SIGNED ) FROM ...
如果您期望 unsigned int 变量中的值是负数,您将不会得到它,因为数据类型是unsigned。它只能保存 +ve 值。
对于数据类型int:有符号范围是 -2147483648 到 2147483647。无符号范围是 0 到 4294967295。
乘以 -1 会发生,结果也将是相同的数据类型(无符号整数),其 MSB(最高有效位)将为 1 以表示负数。
将结果转换或转换为带符号的 int 以获得您想要的。