Počínaje SQL Server 2012 můžete formátovat číselné typy pomocí T-SQL FORMAT()
funkce. Tato funkce přijímá tři argumenty; číslo, formát a volitelný argument „kultura“.
Vrací formátovaný řetězec typu nvarchar .
Formát je dodáván jako formátovací řetězec. Formátovací řetězec definuje, jak by měl být výstup formátován.
Zde je příklad:
SELECT FORMAT(1, 'N');
Výsledek:
1.00
V tomto případě jsem použil N
jako druhý argument. Toto je standardní specifikátor číselného formátu pro číslo. Tento konkrétní specifikátor formátu (N
) má za následek formátování výstupu pomocí celočíselných a desetinných číslic, oddělovačů skupin a oddělovače desetinných míst s volitelným záporným znaménkem. Tento argument nerozlišuje velká a malá písmena, takže buď N
nebo n
je v pořádku.
Desetinná místa
Zde je další příklad, tentokrát s použitím N1
k určení, že chceme pouze jedno desetinné místo:
SELECT FORMAT(1, 'N1');
Výsledek:
1.0
Ale můžete také zvýšit počet desetinných míst:
SELECT FORMAT(1, 'N7');
Výsledek:
1.0000000
V těchto příkladech 1
a 7
jsou známé jako přesné specifikátory .
Přesné specifikátory jsou volitelné. Mohou to být hodnoty od 0 do 99, které specifikují přesnost výsledku. Jak to funguje, závisí na použitém specifikátoru formátu. U některých specifikátorů formátu uvede celkový počet číslic ve výsledku, u jiných počet desetinných míst. V ostatních případech bude zcela ignorován. Podívejte se na úplný seznam specifikátorů standardního číselného formátu, abyste viděli, jak přesné specifikace ovlivňují výstup z jednotlivých specifikátorů formátu.
Procento
Následující příklady používají P
argument, který formátuje číslo jako procentuální hodnotu. Vynásobí číslo 100 a poté přidá lokalizovaný znak procenta.
SELECT FORMAT(1, 'P') AS 'Example 1', FORMAT(.375, 'P') AS 'Example 2', FORMAT(.0375, 'P', 'tr-tr') AS 'Example 3';
Výsledek:
Example 1 Example 2 Example 3 --------- --------- --------- 100.00 % 37.50 % %3,75
Všimněte si, že „Příklad 3“ obsahuje třetí argument, který určuje kulturu, která má být použita ve výstupu. V tomto případě používám tr-tr
pro turečtinu. Výsledkem je, že znak procenta se před číslo připojí (namísto toho, aby byl připojen, jako ostatní). Výsledkem je také použití čárky jako oddělovač desetinných míst.
Pokud neuvedete argument „kultura“, použije se jazyk aktuální relace.
Jak si dokážete představit, můžete získat zcela odlišné výsledky v závislosti na vašem aktuálním jazyce nebo hodnotě jakéhokoli argumentu „kultury“. Další příklady naleznete v části Jak může jazyková nastavení ovlivnit výsledky FORMAT().
Měna
Můžete použít C
vrátit hodnotu měny.
SELECT FORMAT(1, 'C');
Výsledek:
$1.00
Můžete také přidat národní prostředí jako třetí parametr.
Zde je několik příkladů:
SELECT FORMAT(1, 'C', 'fr-FR') AS France, FORMAT(1, 'C', 'th-TH') AS Thailand, FORMAT(1, 'C', 'ja-JP') AS Japan;
Výsledek:
France Thailand Japan ------ -------- ----- 1,00 € ฿1.00 ¥1
Exponenciální (vědecké)
Můžete použít E
specifikovat exponenciální zápis.
SELECT FORMAT(1234.56789, 'E');
Výsledek:
1.234568E+003
Hexadecimální
Číslo můžete dokonce formátovat jako šestnáctkové. Chcete-li to provést, použijte X
argument:
SELECT FORMAT(10, 'X');
Výsledek:
A
Hexadecimální číslo je základ 16. Proto se počet počítá 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, než začne znovu (např. 10 v šestnáctkové soustavě je ekvivalentní 16 v desítkové soustavě a 11 je ekvivalent 17 atd.). To je důvod, proč zde uvedený příklad vede k A
, protože v šestnáctkové soustavě A
následuje po 9
.
Zde je další příklad, tentokrát s větším číslem:
SELECT FORMAT(7145, 'X');
Výsledek:
1BE9
Vlastní formát
Můžete si také vytvořit svůj vlastní formát pomocí vlastního číselného formátovacího řetězce. Skládá se z řady vlastních specifikátorů číselného formátu, které poskytují vzor pro vaše číslo.
To je snadněji vysvětleno na příkladu:
SELECT FORMAT(123456789, '##-###-####');
Výsledek:
12-345-6789
V tomto případě používám zástupný znak číslic (#
). Zástupný znak číslice mi umožňuje určit formát čísla pomocí #
symbol jako zástupný symbol pro každé číslo.
Čárky
Další příklad:
SELECT FORMAT(123456789, '#,#');
Výsledek:
123,456,789
Počáteční nuly
Dalším vlastním specifikátorem číselného formátu je nula (0
). Toto můžete použít k doplnění čísla úvodními nulami:
SELECT FORMAT(7, '000') AS 'Example 1', FORMAT(123, '0000') AS 'Example 2', FORMAT(123, '00000') AS 'Example 3';
Výsledek:
Example 1 Example 2 Example 3 --------- --------- --------- 007 0123 00123
Můžete jej také použít k odstranění nul:
SELECT FORMAT(0123, '000') AS 'Example 1', FORMAT(0123, '0000') AS 'Example 2', FORMAT(000123, '00000') AS 'Example 3';
Výsledek:
Example 1 Example 2 Example 3 --------- --------- --------- 123 0123 00123
Přehled číselných specifikátorů formátu
Následující články obsahují všechny číselné specifikátory formátu, které můžete použít s FORMAT()
spolu s příklady T-SQL.
- Standardní řetězce číselného formátu
- Řetězce vlastního číselného formátu
Jedná se o stejné specifikátory formátu, které podporuje rozhraní .NET Framework (FORMAT()
funkce závisí na .NET Framework).
Datum a čas
FORMAT()
Tato funkce také umožňuje formátovat datum a čas.
Datum a čas má samostatnou sadu specifikátorů formátu:
- Standardní řetězce formátu data a času
- Vlastní řetězce formátu data a času