Ответы:
попробуй это
SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
Используйте 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 **.
Как правило, вы можете определить точность числа в SQL, задав его с помощью параметров. В большинстве случаев это будет NUMERIC(10,2)
или Decimal(10,2)
- будет определять столбец как число с 10 цифрами с точностью до 2 (десятичных знаков).
Отредактировано для ясности
Эта работа для меня и всегда держит две цифры дроби
23,1 ==> 23,10
25,569 ==> 25,56
1 ==> 1,00
Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
Вот как дети делают это сегодня:
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
:?
Попробуй это:
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;