2009-05-01 4 views
213

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

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

Каков правильный путь?

ответ

421

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

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

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

+171

Для уточнения DECIMAL (18,4) - 14 цифр перед десятичной точкой и 4 цифры после десятичной точки. – Powerlord

+19

Право - всего 18 цифр, 4 из которых после десятичной точки - точно вправо. –

+0

Слава богу .. все в порядке, возможно, нет ... спасибо @Jeff Atwood за StackOverflow. заполняя пробелы MSDN (хотя MSDN очень хорош до определенной точки), так как это начало! – Coops

93

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

DECIMAL(m,a) 

m является общее количество цифр вашей десятичного может иметь.

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

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

+8

Uhm, 'a' - максимальное число _digits после десятичной точки_, а не _max число десятичных точек_ (из которых вы можете иметь только один, конечно). –

+0

Обычно это обозначается как DECIMAL (p, s), где p обозначает точность (максимально допустимые цифры в числе), а s обозначает масштаб (максимально допустимые цифры после десятичной точки). – RBT

2

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

38

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

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

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

Если вы положили PI в номер Decimal(18,10), укажите как 3.1415926535.

6

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

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

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

+0

Почему это актуально, когда четко задан вопрос о Microsoft SQL Server? –

25

В большинстве случаев я использую десятичную (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 цифр), что достаточно велико для большинства значений.

-1
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)