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.