Запишите число с двумя десятичными знаками SQL Server

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
166
0
870 723
10

Ответы 10

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

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

Его также можно объявить как DECIMAL (10, 2).

jrcs3 14.01.2009 04:54

Это неверно по нескольким причинам. Это не число, это число или десятичное число. Вы говорите, что число (10,2) допускает 10 знаков перед десятичной точкой, что тоже неверно. numeric (10,2) позволяет использовать 10 цифр с двумя знаками после запятой. Диапазон = от -99999999,99 до 99999999,99

George Mastros 14.01.2009 05:16

@G Mastros: Похоже, вы правы в вопросе точности. Что касается фактического наименования соглашения, во многих реализациях SQL NUMBER является допустимым типом. Хотя я признаю, что не знаю случая с sqlserver

AAA 14.01.2009 05:23

@GMastros пришел сказать то же самое. msdn.microsoft.com/en-us/library/aa258832%28v=sql.80%29.aspx

Joe 01.11.2011 22:03

Используйте функцию 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 **.
Mark Byers 25.05.2012 13:41

попробуй это

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

SKCS Kamal 21.04.2020 18:05

Эта работа для меня и всегда сохраняет двухзначные дроби

23,1 ==> 23,10

25,569 ==> 25,56

1 ==> 1,00

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

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

попробуйте функцию STR () от Чарльза Бретаны выше. Он работает так же, как ваша формула, но будет округлять в вашем примере 25,569.

JerryOL 23.06.2011 19:03

Это позволит получить всего 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 года.

user1263981 17.08.2018 10:06

или: ВЫБРАТЬ ФОРМАТ (@test, '. ##')

java-love 20.02.2020 21:37

Если входные данные были: DECLARE @test DECIMAL(18,6) = 0.456789, то SELECT FORMAT(@test, '##.##') возвращает: .46 Как вы можете заставить его показать начальный ноль: 0.46?

luisdev 09.07.2020 10:27

Чтобы получить начальный 0, попробуйте ВЫБРАТЬ ФОРМАТ (@test, '# 0. ##')

Lysoll 10.07.2020 16:25

Я думаю, вы, скорее всего, захотите использовать «0.00» вместо «#. ##». Знак # игнорирует конечные нули, поэтому 5.10 станет 5.1 или 4.00 просто покажет 4 сам по себе. Формат «0.00» гарантирует, что вы всегда будете получать ровно два десятичных знака.

dyoung 09.03.2021 11:36

Другие вопросы по теме