mysql - 两个整数列之间的差异不能按预期工作

时间:2010-02-22 14:59:19

标签: mysql

我正在运行此查询:

SELECT id,like - dislike as result
FROM mytable

列like和unlike是无符号整数。如果列不喜欢像18446744073709551596那样的mysql返回数,那么似乎mysql将此视为无符号并且不能返回负数但是从某种MAX_UNSIGNED_INT继续计算。我怎样才能得到正确的结果

2 个答案:

答案 0 :(得分:5)

尝试投射这两个值(或者仅仅是它们)

SELECT id, convert(like, SIGNED ) - convert(dislike, SIGNED ) as result
FROM mytable

或仅结果

SELECT id, convert(like - dislike, SIGNED ) as result
FROM mytable

在第一种方式中你可以获得类型溢出!第二种方式更好,但我不确定它是否适用于mysql。

答案 1 :(得分:1)

您可以尝试将它们转换为Int:

SELECT id, CAST(like AS INT) - CAST(dislike AS INT) as result FROM mytable