Преобразование float в decimal в SQL Server 2008
у меня есть представление, которое должно возвращать тип decimal для столбцов, хранящихся как float.
Я могу привести каждый столбец к десятичной дроби следующим образом:
, CAST(Field1 as decimal) Field1
проблема с этим подходом заключается в том, что decimal по умолчанию равен 18,0, что автоматически округляет столбцы float до 0. Я хотел бы сохранить точность до 12 знаков после запятой.
однако, если я это сделаю:
, CAST(Field1 as decimal(12,12)) Field1
Я получаю ошибку выполнения:
"Arithmetic overflow error converting float to data type numeric"
поплавок столбец определяется как длина: 8 точность: 53 в таблице. Я ничего не могу изменить в таблице.
каков правильный способ бросить его как десятичный без потери десятичной точности?
1 ответов
12, 12
означает отсутствие цифр перед десятичным разделителем:12
цифры в общей сложности 12
из них после периода.
используйте более подходящий диапазон, скажем:
DECLARE @var FLOAT = 100
SELECT CAST(@var as decimal(20,12))
что дает вам 8
цифры перед разделителем, или настроить его по мере необходимости.