У меня была похожая проблема, но я также должен был удалить десятичную точку, где не было десятичной дроби, здесь было мое решение, которое разбивает десятичную дробь на ее компоненты и основывает количество символов, которое она берет из строки десятичной запятой длина компонента дроби (без использования CASE). Чтобы было еще интереснее, мой номер хранился в виде числа с плавающей запятой без десятичных дробей.
DECLARE @MyNum FLOAT
SET @MyNum = 700000
SELECT CAST(PARSENAME(CONVERT(NUMERIC(15,2),@MyNum/10000),2) AS VARCHAR(10))
+ SUBSTRING('.',1,LEN(REPLACE(RTRIM(REPLACE(CAST(PARSENAME(CONVERT(NUMERIC(15,2),@MyNum/10000),1) AS VARCHAR(2)),'0',' ')),' ','0')))
+ REPLACE(RTRIM(REPLACE(CAST(PARSENAME(CONVERT(NUMERIC(15,2),@MyNum/10000),1) AS VARCHAR(2)),'0',' ')),' ','0')
Результат болезненный, я знаю, но я попал туда с большой помощью из ответов выше.