我正在运行此查询:
SELECT id,like - dislike as result
FROM mytable
列like和unlike是无符号整数。如果列不喜欢像18446744073709551596那样的mysql返回数,那么似乎mysql将此视为无符号并且不能返回负数但是从某种MAX_UNSIGNED_INT继续计算。我怎样才能得到正确的结果
答案 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