Преобразование числа с плавающей запятой в десятичное в SQL Server 2008

У меня есть представление, которое должно возвращать тип decimal для столбцов, хранящихся как float.

Я могу преобразовать каждый столбец в десятичный формат следующим образом:

, CAST(Field1 as decimal) Field1

Проблема с этим подходом заключается в том, что десятичное значение по умолчанию равно 18,0, что автоматически округляет столбцы с плавающей запятой до 0. Я хотел бы сохранить точность до 12 знаков после запятой.

Однако, если я сделаю это:

, CAST(Field1 as decimal(12,12)) Field1

, я получаю сообщение об ошибке выполнения:

"Arithmetic overflow error converting float to data type numeric"

столбец с плавающей запятой определяется как длина: 8 Точность: 53 в таблице. Я не могу ничего изменить в таблице.

Как правильно преобразовать его в десятичное без потери точности?

10
задан marc_s 15 November 2010 в 17:01
поделиться