2012-03-28 13 views
0

MySQLバージョン5.1.4を実行しています。丸め値でdistinctを選択しようとしています.12.5から12私がこれを試した列はすべてdouble型です。私は少しの研究を行い、デフォルトの振る舞いが半分になるように見ていましたので、変更が必要な設定やパラメータがあるのか​​、これがちょうど壊れているのか不思議です。ここでMySQL ROUND関数は、ハーフアップの代わりにラウンドハーフダウンを使用します。

は、参考のために私のクエリです: 何をしたいradius ASC BY arch半径= '' ORDER FROM

答えて

1

参照CEILINGです! thisradius列をDECIMALに変換すると問題が解決するはずです。あなたは行動が基礎となるCライブラリに依存ダブルスため

-2

を半径とDISTINCT ROUND(半径)を選択すると、http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html

SELECT DISTINCT CEILING(radius) as radius FROM arch WHERE radius != '' ORDER BY radius ASC 
+0

これは12.1のようなすべてを13まで丸めます。これは機能しません。 OPは12.5を切り上げたいだけで、すべての切り上げをするわけではありません。 – jzworkman

0

正確な値の型(DECIMAL、INT)のMySQLでは、半分の丸めを使用しています(12.5ラウンドから13まで)。おおよその種類(FLOAT、DOUBLE)については

、MySQLは通常使用ラウンドの半分にも別名銀行は(13.5ラウンド中14に、1212.5ラウンド)を丸めます。

これを回避するには、ラウンドする前に0.5を数値に追加するか、おおよその値の型をDECIMALに変換します。

0
SELECT DISTINCT ROUND(radius+0.1) as radius FROM arch WHERE radius != '' ORDER BY radius ASC 

おそらく、必要に応じて修飾語をさらに減らしてください。

関連する問題