Formatați numărul ca procent în MS SQL Server (Programare, Server Sql, Tsql, Procent)

utilizator3513237 a intrebat.
a intrebat.

Încerc să formatez pur și simplu un număr ca procent cu două zecimale. Dacă este 37 împărțit la 38 (aka .973684210526315789), aș dori să apară 97,36 % în rezultatul SQL. Știu că se recomandă să se facă formatarea în aplicație, însă aceasta este pentru un export automat. Se utilizează SQL Server 2008.

Iată ce am acum:

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

Dacă ați putea explica ce sunt diferiți parametri în orice funcție, ar fi de ajutor.

6 răspunsuri
Sharad

Răspunsul lui M.Ali ar putea fi modificat după cum urmează

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

Comentarii

  • Acesta este cel mai bun răspuns, deoarece funcționează cu orice versiune SQL. Exact ceea ce este necesar. Vă mulțumesc. –  > Por utilizator3513237.
jbeldock

În SQL Server 2012 și ulterior, există opțiunea FORMAT() funcție. Puteți să-i transmiteți un 'P' parametru pentru procentaj. De exemplu:

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

Pentru să suportați precizia zecimală a procentului, , puteți utiliza P0 pentru nici o zecimală (numere întregi) sau P3 pentru 3 zecimale (97,368%).

SELECT FORMAT((37.0/38.0),'P0') as [WholeNumberPercentage] -- 97 %
SELECT FORMAT((37.0/38.0),'P3') as [ThreeDecimalsPercentage] -- 97.368 %

Comentarii

  • Îmi pare rău că ar fi trebuit să menționez că folosesc SQL Server 2008, deci nu pot folosi această funcție. –  > Por utilizator3513237.
  • Oh, bine! În acest caz, s-ar putea să vă fie de ajutor acest articol, mai exact soluția #1: raresql.com/2013/08/04/… –  > Por jbeldock.
  • ce se întâmplă dacă vrem doar 97%. Doar numărul întreg % –  > Por Juan Velez.
  • Dacă aveți SQL Server 2008, funcția FORMAT este foarte utilă pentru acest lucru. Returnează un număr întreg specificând precizia astfel: SELECT FORMAT(.99, ‘P0’); –  > Por Nick Allan.
Simon Darlow

Utilizarea funcției FORMAT în noile versiuni ale SQL Server este mult mai simplă și permite un control mult mai mare:

FORMAT(yournumber, '#,##0.0%')

Avantajul este că puteți controla lucruri suplimentare, cum ar fi separatorii de mii și nu mai aveți acel spațiu între număr și „%”.

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

RESULT:  0.97 %

Comentarii

  • Răspunsul necesar este 97,36 % (nu 0,97 %) –  > Por JohnS.
sqluser

Și pentru toate versiunile SQL Server

SELECT CAST(0.973684210526315789 * 100 AS DECIMAL(18, 2))

Comentarii

  • Mi-ar fi plăcut să folosesc FORMAT(). Dar eu lucrez cu SQL 2008. Acest lucru a funcționat foarte bine. –  > Por SherlockSpreadsheets.
Dor Budkov

a acceptat provocarea de a rezolva această problemă. comentariul numărul 5 (M.Ali) a cerut — „Răspunsul necesar este 97,36 % (nu 0,97 %) .. „așa că pentru asta atașez o fotografie care compară între postul numărul 3 (sqluser) și soluția mea. (eu folosesc postgre_sql pe un mac)

Comentarii

  • Răspunsul dvs. poate funcționa pentru Postgres, dar sintaxa nu se traduce pentru MS Sql Server, ceea ce a fost solicitat. –  > Por Rachel Ambler.
  • ai dreptate în legătură cu linia to_char, dar dacă încerci doar funcția de linie „Cast” ar trebui să funcționeze pentru tine, așa cum poți vedea în fotografia pe care am încărcat-o. –  > Por Dor Budkov.