Примерен избор за проверка на предложените стойности:
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
Изявление за актуализация ..
Включва обработка на нулева стойност (т.е. оставя ги недокоснати)
Включва обработка на научни стойности с E нотация в стойностите на изходния низ. напр. 6.6699999999999995E-2
Включва премахване на нулата в края от дясната страна на числото
Използва се функцията Format.
Функцията STR с float оставя нули в края, така че не съм я използвал.
Функцията Convert с float в низ определя собствения си брой десетични знаци, така че исках да избегна и това!
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
Моля, имайте предвид, че 0 в спецификатора на формата има конкретно значение.
Моля, вижте:
https://docs.microsoft .com/en-us/dotnet/standard/base-types/custom-numeric-format-strings