Відповіді:
спробуйте це
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 результату, додавши до кінця .01:
299.01/100
Це дозволить усього 10 цифр з двома значеннями після десяткової. Це означає, що воно може вмістити значення значення перед десятковим до 8 цифр і 2 після десяткових.
Щоб перевірити, введіть значення у наступний запит.
DECLARE vtest number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;