Какой тип MySQL следует использовать для хранения десятичного числа переменной точности (может меняться для каждой записи) - PullRequest
0 голосов
/ 04 ноября 2011
  1. Если я храню десятичное значение как 1.200, я хочу, чтобы запрос извлекал значение как 1.200, но если я сохраняю значение как 1.450005, я хочу, чтобы запрос возвращал 1.450005.
  2. Мне нужночтобы можно было сравнивать поле как числовой тип.

На первый взгляд десятичная дробь (10,6) является хорошим использованием для моего требования, чтобы поле представляло цены, но чтоЯ действительно хочу это поле, которое может хранить до 6 цифр справа от десятичного знака, не обязательно все 6 цифр каждый раз .

Если этотребование выполнено, я эффективно закодировал информацию о точности в поле, что полезно для извлечения данных в экземпляр десятичного объекта C ++, который требует, чтобы значение 1,20 (точность 2) отличалось от 1,2000 (точность 4), дажехотя они имеют одинаковую ценность / ценность.Сохранение информации о точности в моем объекте имеет решающее значение для дальнейших арифметических операций.

Альтернативой, я полагаю, является сохранение значения в виде varchar () в Mysql, которое сохранит цифры, но затем утратит функциональность арифметических операторовв Mysql.

Третья, уродливая альтернатива - использовать десятичное число (10,6), а затем использовать одно дополнительное поле, в котором будет храниться точность, которую я использую, чтобы я мог правильно конвертировать в свой экземпляр C ++.Возможно, мне придется пойти на этот уродливый подход, если нет лучших решений.

У кого-нибудь есть хорошее предложение о том, как я могу подойти к этим требованиям?

1 Ответ

0 голосов
/ 10 июля 2012

Согласно комментариям Кронтаба и Джима Гаррисона, лучшее решение этого вопроса:

  1. Используйте DECIMAL(10,6) для хранения самого номера и
  2. Используйте одно дополнительное поле, в котором будет храниться точность, относящаяся к конкретной записи
...