2015-05-06 1 views
13

Я пытаюсь просто форматировать число в процентах с двумя знаками после запятой. Если он разделен на 38 (ака .973684210526315789), я бы хотел, чтобы он отображал 97.36% в выводе SQL. Я знаю, что рекомендуется использовать форматирование в приложении, однако это для автоматического экспорта. Это использование SQL Server 2008.Номер формата в процентах в MS SQL Server

Вот что я сейчас:

select CONVERT(VARCHAR(50),cast(37 as decimal)/cast(38 as decimal)*100)+' %' AS [%] 

Если бы вы могли объяснить, что различные параметры, а также в какой-либо функции, которые были бы полезны.

ответ

20

ответ M.Ali могло быть модифицирован

select Cast(Cast((37.0/38.0)*100 as decimal(18,2)) as varchar(5)) + ' %' as Percentage 
+1

Это лучший ответ, потому что он работает с любой версией SQL. Именно то, что нужно. Спасибо. – user3513237

40

В SQL Server 2012 и более поздних версиях есть функция FORMAT(). Вы можете передать ему параметр 'P' для процента. Например:

SELECT FORMAT((37.0/38.0),'P') as [Percentage] -- 97.37 % 

К support percentage decimal precision, вы можете использовать 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 % 
+1

К сожалению, я должен уже говорил, я использую SQL Server 2008, поэтому не может использовать эту функцию. – user3513237

+0

О, ну! В этом случае вы можете найти эту статью полезной, в частности, решение № 1: http://raresql.com/2013/08/04/sql-server-how-to-format-values-as-a-percentage/ – jbeldock

+1

что если мы хотим только 97%. Только целое число% –

3
SELECT cast(cast(round(37.0/38.0,2) AS DECIMAL(18,2)) as varchar(100)) + ' %' 

RESULT: 0.97 % 
+2

Требуемый ответ: 97.36% (не 0.97%) – JohnS

1

И для всех версий SQL Server

SELECT CAST(0.973684210526315789 * 100 AS DECIMAL(18, 2)) 
Смежные вопросы