Exempel välj för att kontrollera föreslagna värden:
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
Uppdatera uttalande ..
Inkluderar hantering av nullvärde (dvs lämnar dem orörda)
Inkluderar hantering av vetenskapliga värden med E-notation i källsträngsvärden. t.ex. 6,66999999999999995E-2
Inkluderar borttagning av efterföljande nolla på höger sida av nummer
Formatfunktionen används.
STR-funktionen med en float lämnar eftersläpande nollor, så det använde jag inte.
Funktionen Konvertera med ett flytande till en sträng bestämmer det egna antalet decimaler så jag ville undvika det också!
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
Observera att nollan i formatspecifikationen har en specifik betydelse.
Se:
https://docs.microsoft .com/en-us/dotnet/standard/base-types/custom-numeric-format-strings