我運行此查詢不工作:MySQL的 - 兩個整列之間的差異確實如預期
SELECT id,like - dislike as result
FROM mytable
哪裏像柱和不喜歡的是無符號整數。如果列的不喜歡比像mysql的返回數字更像18446744073709551596,那麼似乎mysql會像無符號那樣對待它,並且不能返回負數,而是繼續從某種MAX_UNSIGNED_INT進行計算。我怎麼能有正確的結果
我運行此查詢不工作:MySQL的 - 兩個整列之間的差異確實如預期
SELECT id,like - dislike as result
FROM mytable
哪裏像柱和不喜歡的是無符號整數。如果列的不喜歡比像mysql的返回數字更像18446744073709551596,那麼似乎mysql會像無符號那樣對待它,並且不能返回負數,而是繼續從某種MAX_UNSIGNED_INT進行計算。我怎麼能有正確的結果
嘗試(只對其中或可能)
SELECT id, convert(like, SIGNED) - convert(dislike, SIGNED) as result
FROM mytable
或只有結果
SELECT id, convert(like - dislike, SIGNED) as result
FROM mytable
在你可以得到類型,第一種方式鑄造兩個值溢出!第二種方式更好,但我不確定它是否適用於MySQL。
我剛剛嘗試像CAST(像UNSIGNED) - CAST(如UNSIGNED)但不起作用 – 2010-02-22 15:02:30
強制轉換爲簽名:)。與CAST(就像UNSIGNED)你基本上從UNSIGNED投到UNSIGNED,這是相同的 – anthares 2010-02-22 15:03:17
該死的!你是對的...抱歉,今天是漫長的一天。 – 2010-02-22 15:09:35
你可以嘗試鑄造他們爲INT:
SELECT id, CAST(like AS INT) - CAST(dislike AS INT) as result FROM mytable
你可以添加顯示的結果中創建表mytable的? – Dominik 2010-02-22 15:02:07