Как хранить десятичные значения в SQL Server?

Я пытаюсь вычислить десятичный тип данных столбца в SQL Server. Мне нужно иметь возможность хранить такие значения, как 15,5, 26,9, 24,7, 9,8 и т.д.

Я назначил decimal(18, 0) для типа данных столбца, но это не позволяет мне хранить эти значения.

Каков правильный способ сделать это?

Ответ 1

DECIMAL(18,0) будет содержать 0 цифр после десятичной точки.

Используйте что-то вроде DECIMAL(18,4), а это должно быть прекрасно!

Это дает вам всего 18 цифр, 4 из которых после десятичной точки (и 14 до десятичной точки).

Ответ 2

Вы должны использовать следующее:

DECIMAL(m,a)

m - количество цифр, которое может иметь десятичный знак.

a - максимальное количество цифр, которое вы можете иметь после десятичной точки.

http://www.tsqltutorials.com/datatypes.php содержит описания для всех типов данных.

Ответ 3

Настройки Decimal - это его точность и масштаб или на обычном языке, сколько цифр может иметь число и сколько цифр вы хотите иметь справа от десятичной точки.

Итак, если вы поместите PI в Decimal(18,0), он будет записан как 3?

Если вы поместите PI в Decimal(18,2), он будет записан как 3.14?

Если вы положите PI в Decimal(18,10), запишите как 3.1415926535.

Ответ 4

В большинстве случаев я использую десятичную (9,2), которая занимает наименьшее количество хранилищ (5 байтов) в десятичном типе sql.


Точность = > байты хранения

  • 1 - 9 = > 5
  • 10-19 = > 9
  • 20-28 = > 13
  • 29-38 = > 17

Он может хранить от 0 до 9 999 999,99 (7-значный infront + 2 цифры за десятичной точкой = всего 9 цифр), что достаточно велико для большинства значений.

Ответ 5

В MySQL DB decimal(4,2) разрешено вводить всего 4 цифры. Как вы видите в decimal(4,2), это означает, что вы можете ввести в общей сложности 4 цифры, из которых две цифры предназначены для сохранения после десятичной точки.

Итак, если вы введете 100.0 в базу данных MySQL, в нем появится ошибка типа "Вне диапазона значений для столбца".

Итак, вы можете вводить только этот диапазон: от 00.00 до 99.99.

Ответ 6

Другие ответы правильные. Предполагая, что ваши примеры отражают весь спектр возможностей, которые вы хотите, DECIMAL(3, 1). Или, DECIMAL(14, 1) позволит в общей сложности 14 цифр. Это ваша работа, чтобы думать о том, что достаточно.

Ответ 7

request.input("name", sql.Decimal, 155.33)              // decimal(18, 0)
request.input("name", sql.Decimal(10), 155.33)          // decimal(10, 0)
request.input("name", sql.Decimal(10, 2), 155.33)       // decimal(10, 2)