Как-то в одной социальной сети спросили, как убрать концевые нули в десятичных числах. Это было связано с подготовкой некоего отчета, где денежные суммы конкатенировались с текстом. В постановке задачи указывалось ограничение на два десятичных знака. Вот пример данных и требуемый результат:
дано
получить
0.00
0
10.00
10
2.50
2.5
100.00
100
11.33
11.33
Предлагались решения, построенные на разборе строки. Я тоже впал в подобную ересь :-) и предложил следующее решение.
Консоль
Выполнить
SELECT num,
CASEWHENCAST(num AS INT) = num
THENCAST(CAST(num AS INT)AS VARCHAR)
WHENCAST(num*10AS INT) = num*10
THENLEFT(CAST(num AS VARCHAR), LEN(CAST(num AS VARCHAR)) - 1)
Не знаю, сколько бы это еще продолжалось, если бы один участник дискуссии не заметил, что все проблемы решает приведение к типу данных
Тип данных с плавающей точкой.
float. Действительно,
Практически аналогичное поведение, за исключением того, что для параметра в диапазоне 1 – 24 точность составляет 6 цифр. Соответственно последние результаты будут выглядеть так: