Напишите число с двумя десятичными знаками SQL-сервера - PullRequest
131 голосов
/ 14 января 2009

Как написать число с двумя десятичными знаками для сервера sql?

Ответы [ 10 ]

182 голосов
/ 12 февраля 2009

попробуйте

SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
61 голосов
/ 14 января 2009

Использование Str() Функция. Требуется три аргумента (число, общее количество отображаемых символов и количество отображаемых десятичных знаков

  Select Str(12345.6789, 12, 3)

отображает: «12345.679» (3 пробела, 5 цифр 12345, десятичная точка и три десятичных знака (679). - округляется, если необходимо усечь (если целая часть не слишком велика для общего размера, в этом случае вместо этого отображаются звездочки.)

всего 12 символов, с 3 справа от десятичной точки.

34 голосов
/ 14 января 2009

Как правило, вы можете определить точность числа в SQL, задав его с помощью параметров. В большинстве случаев это будет NUMERIC(10,2) или Decimal(10,2) - столбец будет определен как число с 10 цифрами с точностью до 2 (десятичных разрядов).

Отредактировано для ясности

13 голосов
/ 19 июня 2011

Это работает для меня и всегда держит две цифры дроби

23,1 ==> 23,10

25,569 ==> 25,56

1 ==> 1,00

Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2

Скриншот кода

7 голосов
/ 11 июля 2017

Вот как дети делают это сегодня:

DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')

123,46

6 голосов
/ 07 декабря 2016

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

SELECT CAST(12 AS DECIMAL(16,2))

ИЛИ

SELECT CAST('12' AS DECIMAL(16,2))

выход

12.00
5 голосов
/ 06 октября 2016

Если у вас все в порядке с округлением числа вместо его усечения, тогда это просто:

ROUND(column_name,decimals)
2 голосов
/ 03 апреля 2012

Умножьте значение, которое вы хотите вставить (например, 2.99), на 100

Затем вставьте деление на 100 результата, добавив к концу 0,01:

299.01/100
1 голос
/ 27 марта 2017

Попробуйте это:

 declare @MyFloatVal float;

    set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))

    select  @MyFloatVal

    Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount
0 голосов
/ 16 февраля 2012

Это позволит всего 10 цифр с 2 значениями после десятичной дроби. Это означает, что он может вместить значение до десятичной цифры до 8 и до 2 после десятичной.

Для проверки введите значение в следующем запросе.

DECLARE vtest  number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;
...