Exemplo selecione para verificar os valores propostos:
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
Atualizar declaração..
Inclui manipulação de valor nulo (ou seja, deixa-os intocados)
Inclui manipulação de valores científicos com notação E em valores de string de origem. por exemplo. 6.6699999999999995E-2
Inclui a remoção do zero à direita no lado direito do número
A função Formatar é usada.
A função STR com um float deixa zeros à direita, então eu não usei isso.
A função Convert com um float para uma string determina seu próprio número de casas decimais, então eu queria evitar isso também!
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
Observe que o 0 no especificador de formato tem um significado específico.
Por favor, veja:
https://docs.microsoft .com/en-us/dotnet/standard/base-types/custom-numeric-format-strings