Как написать число с двумя знаками после запятой для сервера sql?
Напишите число с двумя десятичными знаками SQL Server
Ответы (10)
Попробуй это
SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
Такие как
SELECT CONVERT(DECIMAL(10,2),2.999999)
приведет к выводу 3.00
Используйте функцию Str()
. Он принимает три аргумента (число, общее количество отображаемых символов и количество отображаемых десятичных разрядов).
Select Str(12345.6789, 12, 3)
отображает: ' 12345.679' ( 3 пробела, 5 цифр 12345, десятичная точка и три десятичных цифры (679). - округляется, если необходимо усечь (если только целая часть не слишком велика для общего размера, в этом случае вместо этого отображаются звездочки.)
всего 12 символов, с 3 справа от десятичной точки.
it rounds if it has to truncate
... если целая часть не слишком велика для общего размера, в этом случае вместо нее отображаются звездочки. Это упоминается в документации для STR
. Вот цитата с этой страницы: STR(1223,2) truncates the result set to **.
- person Mark Byers; 25.05.2012
Как правило, вы можете определить точность числа в SQL, определив его с помощью параметров. В большинстве случаев это будет NUMERIC(10,2)
или Decimal(10,2)
— будет определять столбец как число с 10 цифрами с точностью до 2 (десятичных знаков).
Отредактировано для ясности
Вот как дети делают это сегодня:
DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
123.46
DECLARE @test DECIMAL(18,6) = 0.456789
, то SELECT FORMAT(@test, '##.##')
возвращает: .46
Как сделать так, чтобы начальный нуль отображался: 0.46
?
- person luisdev; 09.07.2020
Это работает для меня и всегда сохраняет дроби из двух цифр
23.1 ==> 23.10
25.569 ==> 25.56
1 ==> 1.00
Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
Если вам нужны только два десятичных знака, самый простой способ:
SELECT CAST(12 AS DECIMAL(16,2))
OR
SELECT CAST('12' AS DECIMAL(16,2))
Вывод
12.00
Если вы согласны с округлением числа вместо его усечения, то это просто:
ROUND(column_name,decimals)
Попробуй это:
declare @MyFloatVal float;
set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))
select @MyFloatVal
Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount
Умножьте значение, которое вы хотите вставить (например, 2,99), на 100.
Затем вставьте деление на 100 результата, добавив 0,01 в конец:
299.01/100
Это позволит всего 10 цифр с 2 значениями после запятой. Это означает, что он может вместить значение до десятичного числа до 8 цифр и 2 после десятичного числа.
Для проверки поместите значение в следующий запрос.
DECLARE vtest number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;