2016-08-10 50 views
0

我們最近開始着手遷移到新的服務器。MariaDB版本:if語句差異

當前服務器正在運行MariaDB版本5.5.28。
新服務器正在運行MariaDB版本5.5.47。

當我們運行這些查詢上MariaDB的版本5.5.28,我們得到了相同的答案:
SELECT IF(1 < 2,10,20); 。 。 。 。 。 。 。答案:10
SELECT IF(1 < 2,10,20.000); 。 。 。答:10

當MariaDB的版本47年5月5日運行,我們得到不同的小數位數的答案:
SELECT IF(1 < 2,10,20); 。 。 。 。 。 。 。答案:10
SELECT IF(1 < 2,10,20.000); 。 。 。答案:10.000

在版本5.5.47上,即使條件評估爲真,假結果(20.000)的格式將用於格式化真實結果(10)。

任何想法爲什麼查詢將返回10.000而不是10?
在此先感謝。

+0

MariaDB將使用可以表示這兩種數據的數據類型。在你的情況下,它是十進制。如果你嘗試'select if(1 <2,20,「test」)',你會看到結果是一個左對齊的字符串'20'而不是右對齊的數字'20'。以前的行爲被認爲是一個錯誤。 – alvits

回答

0

MariaDB 5.5.40「修正了十進制類型」 - 我不知道這是否改變了您的用例,並且他們是否認爲這是一個「修復」,而不是「休息」。

提交錯誤信息,如果你喜歡的話。

FWIW,MySQL 5.6.12得到10