Я не могу преобразовать varchar в десятичное число, используя CAST или CONVERT. Когда я проверяю, является ли строка действительным числом или нет, ISNUMERIC возвращается как действительное число. Но когда используется CAST или CONVERT, он выдает «Ошибка преобразования типа данных varchar в числовой».
Пробовал разные варианты, но не повезло с ними. Если я уберу 'e +' из строки, это сработало, но результат был неправильным.
Я пытался использовать REPLACE, чтобы увидеть, есть ли что-нибудь. Но бесполезно.
select isnumeric( '1.67022e+006') as c,
CAST('1.67022e+006') AS DECIMAL(24, 10)) AS ci,
CAST(replace('1.67022e+006','','') AS DECIMAL(24, 10)) AS cii,
CAST(replace('1.67022e+006','e+','') AS DECIMAL(24, 10)) AS civ,
CAST(1.67022e+006 AS DECIMAL(24, 10)) AS ciii;
CAST('1.67022e+006') AS DECIMAL(24, 10)) --> Error
CAST(replace('1.67022e+006','','') AS DECIMAL(24, 10)) --> error
CAST(replace('1.67022e+006','e+','') AS DECIMAL(24, 10)) --> 1.6702200600
CAST(1.67022e+006 AS DECIMAL(24, 10)) --> 1670220.0000000000