Как получить только 2 знака после запятой из функции?

#sql #sql-server #tsql

#sql #sql-сервер #tsql

Вопрос:

Я использую процедуру для получения некоторой информации из моей базы данных, и у меня есть значение, которое я получаю из функции. Это значение имеет 5 знаков после запятой, поэтому я попытался получить это значение только с 2 знаками после запятой, делая это:

 cast([dbo].[myFunction](param1, param2, param3)as decimal(20,2)) as Total
  

Код не выдает мне никакой ошибки, но он содержит 5 знаков после запятой вместо 2.

Заранее спасибо.

Комментарии:

1. Мы упускаем здесь часть вашей логики? Это выражение будет возвращать только decimal(20,2) , которое будет иметь 2 знака после запятой. (Конечно, мы не знаем DDL для myFunction , но это не меняет инструкцию, поскольку вы явно преобразуете значение).

2. Возможно, помимо этого выражения происходит что-то еще, например, является ли это частью UNION (ALL) запроса? Можете ли вы опубликовать весь свой запрос?

3. Это решено, моя процедура имеет объединение, и это было без приведения, а sql предполагает большее количество знаков после запятой, мне также пришлось принудительно выполнять 2-ю часть объединения.

4. @HoneyBadger это правильно. Спасибо.

Ответ №1:

Это решено, моя процедура имеет объединение, и это было без приведения, а sql предполагает большее количество знаков после запятой, мне также пришлось принудительно выполнять 2-ю часть объединения.

Спасибо вам всем.