5

私のMySQLデータベースにはフィールドDECIMAL(23,5)があるため、小数点以下5桁です。さて、次のようにクエリします。

UPDATE my_table SET my_decimal_field = 123.123456789 WHERE id = 1

そして、そのレコードをフェッチします。

SELECT id, my_decimal_field FROM gijhars WHERE id = 1

私はこの結果を得ます:

+------+------------------+
| id   | my_decimal_field |
+------+------------------+
| 5733 |   123.12346      |
+------+------------------+

もちろん、小数点以下が 6 桁を超える場合、MySQL はこれらの値を丸めます。丸めの代わりにこれらの値を下げるために、MySQL に設定はありますか?

4

1 に答える 1

8

ドキュメントから

そのような列に、小数点以下の桁数が指定された位取りで許可されているよりも多い値が割り当てられている場合、値はその位取りに変換されます。(正確な動作はオペレーティング システムによって異なりますが、一般的には許容される桁数に切り捨てられます。 )

お使いのオペレーティング システムがそうでない場合は、truncateを使用して更新中にこれを処理できます。

UPDATE my_table 
SET my_decimal_field = truncate(123.123456789, 5) 
WHERE id = 1

SQLFiddle デモ

于 2013-02-18T12:30:03.753 に答える