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

Jak formátovat čísla v SQL Server

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

  1. Jak exportovat výsledky dotazu do souboru CSV v SQL Developer (Oracle)

  2. Jak víte, co je dobrý index?

  3. Použijte PostgreSQL SSL připojení v rezu s certifikáty podepsanými sebou samým

  4. Najděte duplicitní položky ve sloupci