Доступ к MySQL странное ценовое поле - PullRequest
0 голосов
/ 03 мая 2011

Я разрабатываю новую версию приложения, которое использовало базу данных ms-access, потому что она становилась слишком медленной. Поэтому я решил использовать MySQL в качестве базы данных. Я доволен своим выбором. Проблема в том, что у меня огромная база данных, заполненная ценами. Эти цены отображаются правильно в старом приложении, но в моей базе данных это выглядит так: '26,.000000.00', '71,9.00000.00', '24,9.00000.00'. Поле

'price' VARCHAR(255) NOT NULL DEFAULT '0', 

Я не знаю, как это исправить. это из-за типа данных или из-за того, что приложение действительно ужасное?

Ответы [ 2 ]

3 голосов
/ 03 мая 2011

Я не знаю, как это исправить. это из-за типа данных или из-за того, что приложение действительно ужасное?

Проблема должна быть в типе данных. Эта тема поможет вам выбрать одну.

Кроме того, вы, вероятно, захотите преобразовать столбец в десятичный (или другой числовой) тип. Это похоже на

  • добавление нового столбца желаемого тип, ALTER TABLE herpderp add new_price Decimal (19,4)
  • заполнить его из старого столбца (вам понадобится удобная функция для преобразования вашего строки в числа) update herpderp set new_price = handy_function(price)
  • отбросить старый столбец ALTER TABLE herpderp DROP COLUMN price
  • переименовать новый столбец к старому названию ALTER TABLE herpderp CHANGE COLUMN new_price price
0 голосов
/ 03 мая 2011

Я думаю, что вы должны использовать правильный тип данных для хранения этих значений, если вы пытаетесь хранить цены (деньги), то вы должны использовать десятичный тип данных.

Вот что говорится в документации:

Типы с фиксированной точкой (точное значение)

Типы DECIMAL и NUMERIC хранят точные числовые значения данных. Эти типы используются, когда важно сохранить точную точность, например, с денежными данными. В MySQL NUMERIC реализован как DECIMAL, поэтому следующие замечания о DECIMAL в равной степени применимы к NUMERIC.

Подробнее об этом можно прочитать здесь: http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...