2016-08-10 4 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のバージョン5.5.47で実行した場合、我々は小数点以下の桁数が異なる答えを得る:
SELECT IF(1 < 2、10、20); 。 。 。 。 。 。 。回答:10
SELECT IF(1 < 2、10、20.000); 。 。 。回答:10.000

バージョン5.5.47では、条件がtrueと評価されても、誤った結果(20.000)のフォーマットが実際の結果(10)をフォーマットするために使用されています。

クエリが10ではなく10.000を返す理由は何ですか?
ありがとうございます。

+0

MariaDBは、両方のデータを表すことができるデータ型を使用します。あなたの場合は小数です。 'select if(1 <2,20、" test ")'を試してみると、結果は右詰めの数字「20」の代わりに左詰めの文字列「20」になります。以前の動作はバグとみなされました。 – alvits

答えて

0

MariaDB 5.5.40には「小数点型の修正」がありました。これにより、ユースケースが変更されたかどうか、また、修正されたかどうかは分かりません。

ご希望の場合はバグを報告してください。

FWIW、MySQL 5.6.12は10です。

関連する問題