Преобразование 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 цифры перед разделителем, или настроить его по мере необходимости.