kiltum (kiltum) wrote,
kiltum
kiltum

Меня опять наэтовал mysql. А вернее, его тип decimal.

Согласно мануалу:

The DECIMAL and NUMERIC types are implemented as the same type by MySQL. They are used to store values for which it is important to preserve exact precision, for example with monetary data. When declaring a column of one of these types, the precision and scale can be (and usually is) specified; for example:

salary DECIMAL(5,2)

In this example, 5 is the precision and 2 is the scale. The precision represents the number of significant decimal digits that will be stored for values, and the scale represents the number of digits that will be stored following the decimal point.


Я сделал поле tmp decimal(3,2), рассчитывая хранить в нем данные со значениями от -99.99 до 99.99. Для температуры то бишь. Создаем табличку, запихиваем в нее одну запись и пробуем обновить ее.

update temp set tmp=-12.34;
Query OK, 0 rows affected (0.04 sec)
Rows matched: 1 Changed: 0 Warnings: 1


Оппа. Фигу.
+-------+
| tmp   |
+-------+
| -9.99 |
+-------+


Может, не хватает чего-нить? Без проблем.

alter table temp change tmp tmp decimal(5,5);

И снова делаем вышеприведенное.
+----------+
| tmp      |
+----------+
| -9.99999 |
+----------+


Хрен, с ним, с местом этим.

alter table temp change tmp tmp float;
update temp set tmp=-10.12;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
+--------+
| tmp    |
+--------+
| -10.12 |
+--------+


Вопрос: ну и кто они после этого?

Update: вопрос снят. Это надо RTFM мне тщательней делать.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments