Каков должен быть лучший способ сохранить процентное значение в SQL Server?

Вы могли бы также рассмотреть использование не двоичного формата как Html

63
задан Stephan Muller 3 January 2015 в 22:18
поделиться

4 ответа

Вы должны использовать десятичное (p, s) в 99,9% случаев.

Процент - это всего лишь концепция представления: 10% по-прежнему 0,1.

Просто выберите точность и масштаб для наивысшие ожидаемые значения / желаемые десятичные разряды, выраженные действительными числами. Вы можете иметь p = s для значений <100% и просто принимать решение на основе десятичных знаков.

Однако, если вам действительно нужно сохранить 100% или 1, вам понадобится p = s + 1.

Это затем разрешает до 9.xxxxxx или 9xx.xxxx%, поэтому я бы добавил ограничение проверки, чтобы сохранить его максимум 1, если это все, что мне нужно.

62
ответ дан 24 November 2019 в 16:19
поделиться

Я думаю, что следует использовать десятичное (p, s) , а s представляет процентную способность. 'p' могло быть даже 1, поскольку нам никогда не понадобится больше одного байта, поскольку каждая цифра в левой части точки составляет один сотый процент, поэтому p должно быть не менее s + 1, чтобы вы могли хранить до 1000%. но SQL не допускает, чтобы 'p' было меньше s.

Примеры: 28.2656579879% должно быть десятичным (13, 12) и должно храниться 00.282656579879 128.2656579879% должно быть десятичным (13, 12) и должно храниться 01.282656579879

28% должно быть сохранено в десятичном (3,2) как 0.28 128% следует сохранить в десятичном формате (3,2) как 1,28

. Примечание: если вы знаете, что не достигнете 100% (т.е. ваше значение всегда будет меньше 100%, чем используйте десятичное (s, s), если будет, используйте десятичную дробь (s + 1, s).

И так далее

9
ответ дан 24 November 2019 в 16:19
поделиться

Я согласен, DECIMAL - это место, где вы должны хранить этот тип числа. Но чтобы облегчить принятие решения, сохраните его как процент от 1, а не как процент от 100. Таким образом, вы можете сохранить ровно столько десятичных знаков, сколько вам нужно, независимо от «целого» числа. Итак, если вам нужно 6 знаков после запятой, используйте DECIMAL (9, 8), а для 23,3436435% вы сохраните 0,23346435. Изменение его на 23,346435% - это проблема с отображением, а не с хранилищем, и большинство языков представления / составителей отчетов и т. Д. Могут изменить отображение за вас.

12
ответ дан 24 November 2019 в 16:19
поделиться

Тип данных столбца должен быть десятичным.

4
ответ дан 24 November 2019 в 16:19
поделиться