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


Как правило, вы можете определить точность числа в SQL, задав его с помощью параметров. В большинстве случаев это будет NUMERIC(10,2) или Decimal(10,2) - столбец будет определяться как Число с 10 общими цифрами с точностью до 2 (десятичные разряды).
Отредактировано для ясности
Это неверно по нескольким причинам. Это не число, это число или десятичное число. Вы говорите, что число (10,2) допускает 10 знаков перед десятичной точкой, что тоже неверно. numeric (10,2) позволяет использовать 10 цифр с двумя знаками после запятой. Диапазон = от -99999999,99 до 99999999,99
@G Mastros: Похоже, вы правы в вопросе точности. Что касается фактического наименования соглашения, во многих реализациях SQL NUMBER является допустимым типом. Хотя я признаю, что не знаю случая с sqlserver
@GMastros пришел сказать то же самое. msdn.microsoft.com/en-us/library/aa258832%28v=sql.80%29.aspx
Используйте функцию 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 **.попробуй это
SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
Я попробовал SELECT CONVERT (DECIMAL (10,2), 10.11111), он вернул 10.11 тот же результат для SELECT CONVERT (DECIMAL (10,2), '10.11111'), который был в Sql Server 2008 R2
Эта работа для меня и всегда сохраняет двухзначные дроби
23,1 ==> 23,10
25,569 ==> 25,56
1 ==> 1,00
Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
попробуйте функцию STR () от Чарльза Бретаны выше. Он работает так же, как ваша формула, но будет округлять в вашем примере 25,569.
Это позволит получить всего 10 цифр с двумя значениями после запятой. Это означает, что он может содержать значение значения до десятичной дроби до 8 цифр и 2 после десятичной дроби.
Для проверки введите значение в следующий запрос.
DECLARE vtest number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;
Умножьте значение, которое вы хотите вставить (например, 2,99), на 100.
Затем вставьте деление на 100 результата, добавив 0,01 в конец:
299.01/100
Если вас устраивает округление число вместо его усечения, то это просто:
ROUND(column_name,decimals)
Если вам нужно всего два десятичных знака, самый простой способ - это ..
SELECT CAST(12 AS DECIMAL(16,2))
ИЛИ ЖЕ
SELECT CAST('12' AS DECIMAL(16,2))
Выход
12.00
Попробуй это:
declare @MyFloatVal float;
set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))
select @MyFloatVal
Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount
Вот как дети это делают сегодня:
DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
123,46
Функция ФОРМАТИРОВАНИЕ доступна начиная с версии 2012 года.
или: ВЫБРАТЬ ФОРМАТ (@test, '. ##')
Если входные данные были: DECLARE @test DECIMAL(18,6) = 0.456789, то SELECT FORMAT(@test, '##.##') возвращает: .46 Как вы можете заставить его показать начальный ноль: 0.46?
Чтобы получить начальный 0, попробуйте ВЫБРАТЬ ФОРМАТ (@test, '# 0. ##')
Я думаю, вы, скорее всего, захотите использовать «0.00» вместо «#. ##». Знак # игнорирует конечные нули, поэтому 5.10 станет 5.1 или 4.00 просто покажет 4 сам по себе. Формат «0.00» гарантирует, что вы всегда будете получать ровно два десятичных знака.
Его также можно объявить как DECIMAL (10, 2).