Por razones que no puedo evitar Tengo una columna varchar con datos como los siguientes: 820.0E-12, 10.0E + 00.Anotación de notación científica (de varchar -> numérico) en una vista
Quiero el valor numérico. Así que tengo este prueba consulta que funciona:
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
Mi resultado es: ,000000000820000000 (que es lo que quiero)
de que cambie de SQL para dar cuenta de los números> 0 (10.0E + 00) así:
WHEN @d like '%E+%' THEN CAST(@d AS FLOAT)
mi resultado cambia a: 8.2e-10 (que no es lo que quiero)
Si cambio @ d = '10 .0E + 00' entonces consigo (lo cual es correcto).
Tengo la visión de que necesito hacer la salida de una columna varchar, que contiene notación científica, convertida en decimal (18,18).
¿Alguien puede decirme qué locura está pasando aquí?
O, tal vez mi pregunta debería ser, ¿cómo puedo convertir/convertir una columna de notación científica varchar a salida decimal en una vista?
Mi primera declaración CUANDO funciona para los números 0 < pero también deben tener en cuenta los números> 0. Cuando cambio el segundo cuando, para incluir el REPARTO, se rompe/da un resultado erróneo.
Su código tal como fue anunciado está trabajando bien para mí ... de salida de la caja cuando cambio a un '12' E + es' 820000000000000' – JNK