2010-02-22 62 views
2

我運行此查詢不工作:MySQL的 - 兩個整列之間的差異確實如預期

SELECT id,like - dislike as result 
FROM mytable 

哪裏像柱和不喜歡的是無符號整數。如果列的不喜歡比像mysql的返回數字更像18446744073709551596,那麼似乎mysql會像無符號那樣對待它,並且不能返回負數,而是繼續從某種MAX_UNSIGNED_INT進行計算。我怎麼能有正確的結果

+0

你可以添加顯示的結果中創建表mytable的? – Dominik 2010-02-22 15:02:07

回答

5

嘗試(只對其中或可能)

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

或只有結果

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

在你可以得到類型,第一種方式鑄造兩個值溢出!第二種方式更好,但我不確定它是否適用於MySQL。

+0

我剛剛嘗試像CAST(像UNSIGNED) - CAST(如UNSIGNED)但不起作用 – 2010-02-22 15:02:30

+0

強制轉換爲簽名:)。與CAST(就像UNSIGNED)你基本上從UNSIGNED投到UNSIGNED,這是相同的 – anthares 2010-02-22 15:03:17

+0

該死的!你是對的...抱歉,今天是漫長的一天。 – 2010-02-22 15:09:35

1

你可以嘗試鑄造他們爲INT:

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