выберите 19/12, верните 1, мне нужно десятичное число, которое составляет 1,58 (sqlserver 2005) - PullRequest
1 голос
/ 13 февраля 2012
select 19/12 

возвращаем 1, мне нужно десятичное число, равное 1,58

Я использую sqlserver 2005

Ответы [ 5 ]

4 голосов
/ 13 февраля 2012

Вы должны выполнить десятичное преобразование или преобразование с плавающей запятой до CAST. В противном случае это просто целочисленное деление

SELECT
   CAST(1.00 * 19 / 12 AS DECIMAL(19,2))

Однако вопрос с двумя десятичными знаками - это проблема с представлением. Я бы сделал это в коде клиента

1 голос
/ 13 февраля 2012

Уже есть пара правильных ответов.

Если вы не хотите использовать приведение и преобразование, определите, например, ваши переменные как реальные. Если вы хотите придерживаться явного использования чисел, просто укажите это так:

select 19.00/12.00
1 голос
/ 13 февраля 2012

Я фанат MySQL, но вы можете попробовать это:

Может быть SELECT 19.0/12.0 Даст вам ответ, который вы ищете?

0 голосов
/ 13 февраля 2012

на самом деле ему нужно только разыграть числитель:

select cast(cast(19 as numeric(5,2))/12 as numeric(5,2))
0 голосов
/ 13 февраля 2012

Использование CAST.

SELECT CAST((CAST(19 AS DECIMAL(9, 2)) / CAST(12 AS DECIMAL(9,2))) AS DECIMAL(9, 2))

Это преобразует результат каждого входного числа в DECIMAL, а также выводит результат в виде DECIMAL.

Вывод вышеуказанного SQL:

1.58

Или просто сделайте как @gbn (краткий метод):

SELECT CAST(1.00 * 19 / 12 AS DECIMAL(9, 2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...