По причинам, которые я не могу помочь, у меня есть столбец varchar с данными, подобными следующим: 820.0E-12, 10.0E + 00.
Я хочу числовое значение. Итак, у меня есть тест запрос, который работает:
declare @d varchar(256)
set @d = '820.0E-12'
select
CASE
WHEN @d like '%E-%' THEN LTRIM(RTRIM(CAST(CAST(@d AS FLOAT) AS DECIMAL(18,18))))
WHEN @d like '%E+%' THEN NULL
ELSE @d
END
Мой результат: 0.000000000820000000 (это то, что я хочу)
Я изменяю свой SQL для учета чисел> 0 (10.0E + 00) следующим образом:
WHEN @d like '%E+%' THEN CAST(@d AS FLOAT)
Мой результат меняется на: 8.2E-10 (это НЕ то, что я хочу)
Если я изменю @d='10.0E+00', тогда я получу 10 (что правильно).
У меня есть представление, что мне нужно сделать вывод из столбца varchar, который содержит научную запись, приведенный / преобразованный в десятичную (18,18).
Может кто-нибудь сказать мне, что здесь происходит сумасшествие?
Или, может быть, мой вопрос должен заключаться в том, как преобразовать / преобразовать столбец научной нотации varchar в десятичный вывод в представлении?
Мой первый оператор WHEN работает для чисел <0, но мне также нужно учитывать числа> 0. Когда я изменяю второй WHEN, чтобы включить CAST , он ломается / дает неправильный результат.