sql >> Databáze >  >> RDS >> Sqlserver

4 způsoby, jak převést číslo na procento v SQL Server (T-SQL)

Zde jsou 4 způsoby, jak převést číslo na procentuální hodnotu v SQL Server.

Přísně vzato to ve skutečnosti „nepřevádíme“ na procenta. Číslo formátujeme jako procento. Ale abychom to mohli udělat, musíme převést číslo z číselného datového typu na řetězec.

Zde jsou 4 způsoby, jak toho dosáhnout.

Příklad 1 – Funkce FORMAT()

Nejviditelnější volbou pro použití je FORMAT() funkce. To vám umožní zobrazit čísla a data ve specifickém formátu.

Zde je příklad použití této funkce k zobrazení čísla v procentech:

SELECT FORMAT(55, 'P') Result;

Výsledek:

+------------+
| Result     |
|------------|
| 5,500.00 % |
+------------+

Všimněte si, že k naší hodnotě byly přidány čtyři nuly (dvě před desetinnou čárkou a dvě za desetinnou čárkou).

K dosažení těchto 55 procent by bylo potřeba následující:

SELECT FORMAT(.55, 'P') Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Pokud je číslo skutečnou procentní hodnotou, kterou chcete, můžete provést toto:

SELECT FORMAT(55 * .01, 'P') Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Zlomkovou část můžete také odstranit přidáním nuly do specifikátoru formátu:

SELECT FORMAT(.55, 'P0') Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

V případě potřeby můžete také přidat další desetinná místa:

SELECT FORMAT(.55123456, 'P7') Result;

Výsledek:

+--------------+
| Result       |
|--------------|
| 55.1234560 % |
+--------------+

Příklad 2 – Funkce CONVERT()

Alternativně můžete použít CONVERT() funkci převést číslo na řetězec a poté přidat znak procenta na konec.

To se může zdát trochu zbytečné vzhledem k tomu, jak snadné to předchozí příklad usnadnil, nicméně FORMAT() Tato funkce byla představena pouze v SQL Server 2012. Proto to budete muset udělat takto, pokud používáte dřívější verzi SQL Server.

SELECT CONVERT(VARCHAR(4), 55) + ' %' Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Samozřejmě, pokud je vaše číslo něco jako .55 a potřebujete, aby se zobrazilo jako 55,00 %, pak to můžete vždy vynásobit 100:

SELECT CONVERT(VARCHAR(6), 0.55 * 100) + ' %' Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

V tomto případě jsem také zvětšil velikost varchar datový typ, který pokryje další znaky.

Také můžete odstranit zlomkovou část pomocí LEFT() funkce:

SELECT CONVERT(VARCHAR(6), LEFT(0.55 * 100, 2)) + ' %' Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

I když při tom musíte být opatrní, protože skutečná hodnota se může lišit a může být více nebo méně než 2. V takovém případě můžete použít TRIM() funkce pro oříznutí úvodních nul a/nebo koncových teček:

SELECT CONVERT(VARCHAR(6), TRIM('0,.' FROM LEFT(0.55 * 100, 3))) + ' %' Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

To však není dokonalé a FORMAT() funkce samozřejmě poskytuje mnohem větší flexibilitu s minimem kódu.

Příklad 3 – Funkce CAST()

Alternativně můžeme použít CAST() funkci provést totéž jako v předchozím příkladu:

SELECT CAST(55 AS VARCHAR(4)) + ' %' Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Všimněte si, že CAST() a CONVERT() používat trochu jiné syntaxe. V případě CAST() hodnota, která má být přetypována, je na prvním místě, zatímco u CONVERT() je to naopak .

Příklad 4 – CONCAT() Funkce

Můžete také použít CONCAT() funkce pro spojení čísla se znakem procenta:

SELECT CONCAT(55, ' %') Result;

Výsledek:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Tato funkce implicitně převádí všechny argumenty na typy řetězců před zřetězením.


  1. MariaDB FOUND_ROWS() Vysvětleno

  2. PSQLException:ERROR:vztah TABLE_NAME neexistuje

  3. java ,Správně používat statické proměnné, aby se zabránilo uváznutí - Synchronizace

  4. Jak vytvořit jedinečný index, kde se nebere v úvahu pořadí sloupců (nastaveno?)