Ответ 1
Ответ M.Ali может быть изменен как
select Cast(Cast((37.0/38.0)*100 as decimal(18,2)) as varchar(5)) + ' %' as Percentage
Я пытаюсь просто форматировать число в процентах с двумя десятичными знаками. Если он разделен на 38 (ака.973684210526315789), я бы хотел, чтобы он отображал 97.36% в выводе SQL. Я знаю, что рекомендуется использовать форматирование в приложении, однако это для автоматического экспорта. Это используется SQL Server 2008.
Вот что у меня есть сейчас:
select CONVERT(VARCHAR(50),cast(37 as decimal)/cast(38 as decimal)*100)+' %' AS [%]
Если бы вы могли объяснить, какие различные параметры есть и в любой функции, которая была бы полезной.
Ответ M.Ali может быть изменен как
select Cast(Cast((37.0/38.0)*100 as decimal(18,2)) as varchar(5)) + ' %' as Percentage
В SQL Server 2012 и более поздних версиях существует функция FORMAT()
. Вы можете передать ему параметр 'P'
для процента. Например:
SELECT FORMAT((37.0/38.0),'P') as [Percentage] -- 97.37 %
Для поддержки десятичной точности процента вы можете использовать P0
без десятичных знаков (целых чисел) или P3
для 3 десятичных знаков (97.368%).
SELECT FORMAT((37.0/38.0),'P0') as [WholeNumberPercentage] -- 97 %
SELECT FORMAT((37.0/38.0),'P3') as [ThreeDecimalsPercentage] -- 97.368 %
SELECT cast( cast(round(37.0/38.0,2) AS DECIMAL(18,2)) as varchar(100)) + ' %'
RESULT: 0.97 %
И для всех версий SQL Server
SELECT CAST(0.973684210526315789 * 100 AS DECIMAL(18, 2))