Как управлять масштабными числами в десятичном формате в SQL Server 2008 - PullRequest
0 голосов
/ 29 июня 2011

Есть ли какая-либо функция в Sql Server 2008, которая управляет масштабными числами. Например, если у нас есть десятичное число 123.456 и в функции, если проход 0, он должен возвращать 123, если я передаю 1, тогда должен возвращать 123.4, если проход 2, затем возвращать 123.45и если пройти 3, тогда вернуть 123.456. Если нет inbult-функции, то, пожалуйста, дайте мне знать любую пользовательскую функцию определения. Спасибо, Рави

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

ROUND() можно обрезать;

select round(123.456, 3, 1) union
select round(123.456, 2, 1) union
select round(123.456, 1, 1) union
select round(123.456, 0, 1) 

>>123.456
>>123.450
>>123.400
>>123.000

Если вы не хотите, чтобы завершающие нули удалили их в слое презентации, приведите к varchar или cast(round(123.456, 3, 1) as float)

1 голос
/ 29 июня 2011
CREATE FUNCTION f_test (
@a INT,
@b FLOAT
) RETURNS DECIMAL(12,6)
AS
BEGIN
  RETURN CAST(@b * POWER(10, @a) AS INT)*1.0 / POWER(10, @a)
END

SELECT dbo.f_test(2, 123.456) AS RESULT

RESULT
----------
123.450000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...