2010-09-22 4 views
3

У меня есть сценарий, где мне нужно округлить, а затем удалить лишние нули из чисел. Поэтому, если у меня есть число, которое я округл (12.456400000), я хочу, чтобы нули были удалены. Есть ли функция, которую я могу использовать для удаления этих чисел? Кажется, что функция раунда оставляет нули на месте?Как округлить число в SQL Server

Как всегда очень ценят входные данные.

-S

+0

дубликата вопрос: http://stackoverflow.com/questions/ 2938296/remove-trailing-zeros-from-decimal-in-sql-server – JeffO

ответ

1

Создать User Defined Function (MSDN link) и минимизации кода .:

CREATE FUNCTION [dbo].[RemoveTrailingZeros] 
(
    @Value decimal 
) 
RETURNS decimal 
AS 
BEGIN 
    RETURN replace(rtrim(replace(@Value, '0', ' ')), ' ', '0') 
END 

Вы могли бы использовать его следующим образом:

SELECT dbo.RemoveTrailingZeros(12.456400000) 
+0

Сладкое спасибо за информацию – scarpacci

+0

Слишком плохо, что она оставила бы целые числа с конечным периодом. '12.00000 -> 12.' –

+0

@Shredder эта функция предназначена для удаления всех завершающих нулей. Если вы хотите указать количество цифр, вы можете использовать решение CAST от JamWheel –

1

Конечно, попробуйте следующее:

select replace(rtrim(replace('12.456400000', '0', ' ')), ' ', '0') 
0

Предположительно вы знаете, сколько знаков после запятой вы округление, так что вы можете бросить в десятичный тип данных с правильным числом DP вне ТУРА

CAST(ROUND(Field, 4) AS DECIMAL(12, 4)) 
Смежные вопросы