SQL-приведение от int до decimal

У меня есть два столбца в таблице, которые заполнены целочисленными значениями. Для каждой записи я хочу разделить значения этих двух столбцов и отформатировать вывод так, чтобы десятичная точка перемещалась в места справа.

например, если у меня есть значения двух столбцов для одной записи как 4 и 1, и я хочу разделить 1 на 4 (так 1/4), то я хочу, чтобы выход был 25.00.

вот последнее, что я недавно пробовал:

CAST(Total AS Decimal(2))/CAST(TotalAnswers AS Decimal(2)) AS 'Percent' 

Я не был возможность найти синтаксическое объяснение функции CAST, чтобы увидеть, что представляет параметр, переданный для decimal. Когда я меняю его, он иногда меняет количество мест справа от десятичного знака, но результаты не всегда то, что я ожидаю, поэтому я хотел бы получить небольшую помощь в этом.

4 ответов


написать так:

SELECT CAST(CAST(Total As float) / TotalAnswers * 100 As decimal(8, 2))

DECIMAL(2) - десятичное 2 цифры до и без цифр после десятичной точки. Это не позволяет вам иметь цифры после запятой!

The DECIMAL(p,s) спецификация определяет количество общих цифр (p) и количество цифр после десятичной точки (s) (где s не может превышать p и равно 0, если ommitted).

вам нужно использовать что-то вроде DECIMAL(4,2) (4-значный итог-2 из которых после десятичная точка; поэтому: также 2 перед десятичной точкой) или что - то в этом роде - некоторые цифры до и после десятичной запятой-тогда вы увидите желаемый результат!

подробнее о DECIMAL введите и его синтаксис, обратитесь к теме MSDN Books Online на decimal и numeric


есть фактические несколько параметров..

(p, s)

здесь

  • p представляет "точность" - общее количество цифр до и после запятой.
  • s представляет собой "шкалу" - количество цифр после запятой.

давая только 1 параметр, вы даете только точность.

посмотреть MDSN.


from book-online для десятичного типа данных: Числовые типы данных с фиксированной точностью и масштабом.

decimal[ (p[ , s])] и numeric [(p [, s] )] Исправлена точность и масштабные номера. При использовании максимальной точности, допустимые значения: от - 10^38 +1 до 10^38 - 1. Синонимами SQL-92 для decimal являются dec и dec(p, s). numeric функционально эквивалентен decimal.

p (точность) Максимальное общее число десятичных разрядов, которые могут быть сохранены, как для слева и справа от десятичной точки. Точность должна быть значением от 1 до максимальной точности 38. Точность по умолчанию-18.

s (масштаб) Максимальное число десятичных разрядов, которое может храниться справа от десятичной точки. Масштаб должен быть значением от 0 до p. Масштаб может быть указан, только если задана точность. Масштаб по умолчанию равен 0; следовательно, 0