У меня довольно распространенная проблема, но мое обычное решение не работает. У меня есть очень точное значение, хранящееся как символ в промежуточной таблице. Когда я нажимаю его на конечный пункт назначения, столбец с числовым типом данных (38,38), он терпит неудачу. Я думал, что это из-за отрицательного знака, но когда я избавился от него, у меня все еще есть проблема. У меня исчерпан числовой столбец, но я все еще получаю следующую ошибку: Ошибка арифметического переполнения при преобразовании nvarchar в числовой тип данных.
Обычно я просто конвертирую в float, но это не работает. Кроме того, я хочу сохранить точность значения, и float, похоже, уберет это.
Что мне здесь не хватает?
DECLARE @Value NVARCHAR(255) = '-1.000000000000000'
SELECT CAST(@Value AS numeric(38,38))
DECLARE @Value NVARCHAR(255) = '-1.000000000000000'
SELECT CAST(CAST(@Value AS FLOAT) AS numeric(38,38))
ПОЯСНЕНИЕ: числовые (38,38) являются абсурдными параметрами и использовались только для тестирования и в качестве примера для этого вопроса. В исходном столбце было задано значение numeric(16,15), которое работало более чем в 99% случаев с набором данных из миллионов записей и поэтому не помечалось как проблема.
numeric(38, 38)
??? Это означает, что всего 38 цифр, 38 цифр после запятой. Как вы ожидаете, что это сработает? - person Eric   schedule 06.02.2018