Ejemplo de selección para comprobar los valores propuestos:
select
case when ISNULL([Call Length], '') = ''
then ''
else
FORMAT(Cast ( CONVERT(numeric(16,4), CAST([Call Length] AS FLOAT)) as float),'########0.####')
end as val123
from Clinical.AAAJFJunk
Actualizar declaración ..
Incluye el manejo de valor nulo (es decir, los deja intactos)
Incluye el manejo de valores científicos con notación E en valores de cadena de origen. p.ej. 6.6699999999999995E-2
Incluye la eliminación del cero final en el lado derecho del número
Se utiliza la función de formato.
La función STR con un flotante deja ceros al final, así que no usé eso.
La función Convertir con un flotante en una cadena determina su propio número de lugares decimales, ¡así que quería evitar eso también!
UPDATE Clinical.AAAJFJunk
SET [Call Length] =
case when ISNULL([Call Length], '') = ''
then '' else
FORMAT(Cast ( CONVERT(numeric(16,4), CAST([Call Length] AS FLOAT)) as float),'########0.####') end
Tenga en cuenta que el 0 en el especificador de formato tiene un significado específico.
Consulte:
https://docs.microsoft .com/en-us/dotnet/standard/base-types/custom-numeric-format-strings