Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak formatować liczby w SQL Server

Począwszy od SQL Server 2012, możesz formatować typy liczbowe za pomocą T-SQL FORMAT() funkcjonować. Ta funkcja przyjmuje trzy argumenty; liczbę, format i opcjonalny argument „kultura”.

Zwraca sformatowany ciąg typu nvarchar .

Format jest dostarczany jako ciąg formatu. Ciąg formatu określa, jak dane wyjściowe powinny być sformatowane.

Oto przykład:

SELECT FORMAT(1, 'N');

Wynik:

1.00

W tym przypadku użyłem N jako drugi argument. Jest to standardowy specyfikator formatu liczb dla Number. Ten konkretny specyfikator formatu (N ) powoduje, że dane wyjściowe są formatowane za pomocą cyfr całkowitych i dziesiętnych, separatorów grup oraz separatora dziesiętnego z opcjonalnym znakiem ujemnym. W tym argumencie nie jest rozróżniana wielkość liter, więc albo N lub n jest w porządku.

Miejsca dziesiętne

Oto kolejny przykład, tym razem przy użyciu N1 aby określić, że chcemy tylko jednego miejsca dziesiętnego:

SELECT FORMAT(1, 'N1');

Wynik:

1.0

Ale możesz też zwiększyć liczbę miejsc po przecinku:

SELECT FORMAT(1, 'N7');

Wynik:

1.0000000

W tych przykładach 1 i 7 są znane jako specyfikatory precyzji .

Specyfikatory dokładności są opcjonalne. Mogą być wartością od 0 do 99, która określa precyzję wyniku. Sposób działania zależy od używanego specyfikatora formatu. Dla niektórych specyfikatorów formatu określi całkowitą liczbę cyfr w wyniku, dla innych określi liczbę miejsc dziesiętnych. W innych przypadkach zostanie całkowicie zignorowany. Zobacz pełną listę specyfikatorów standardowego formatu liczb, aby zobaczyć, jak specyfikatory precyzji wpływają na dane wyjściowe każdego specyfikatora formatu.

Procent

Poniższe przykłady używają P argument, który formatuje liczbę jako wartość procentową. Mnoży liczbę przez 100, a następnie dodaje zlokalizowany znak procentu.

SELECT 
    FORMAT(1, 'P') AS 'Example 1', 
    FORMAT(.375, 'P') AS 'Example 2', 
    FORMAT(.0375, 'P', 'tr-tr') AS 'Example 3';

Wynik:

Example 1  Example 2  Example 3
---------  ---------  ---------
100.00 %   37.50 %    %3,75   

Zauważ, że "Przykład 3" zawiera trzeci argument, który określa kulturę, która ma być używana w danych wyjściowych. W tym przypadku używam tr-tr dla języka tureckiego. Powoduje to dodanie znaku procentu do liczby (zamiast dołączania, jak inne). Powoduje to również użycie przecinka jako separatora dziesiętnego.

Jeśli nie podasz argumentu „kultura”, używany jest język bieżącej sesji.

Jak możesz sobie wyobrazić, możesz uzyskać całkiem różne wyniki w zależności od twojego języka lub wartości jakiegokolwiek argumentu „kulturowego”. Zobacz, jak ustawienia języka mogą wpłynąć na wyniki FORMAT(), aby uzyskać więcej przykładów.

Waluta

Możesz użyć C aby zwrócić wartość waluty.

SELECT FORMAT(1, 'C');

Wynik:

$1.00

Możesz również dodać ustawienia regionalne jako trzeci parametr.

Oto kilka przykładów:

SELECT 
    FORMAT(1, 'C', 'fr-FR') AS France, 
    FORMAT(1, 'C', 'th-TH') AS Thailand, 
    FORMAT(1, 'C', 'ja-JP') AS Japan;

Wynik:

France  Thailand  Japan
------  --------  -----
1,00 €  ฿1.00     ¥1   

Wykładniczy (naukowy)

Możesz użyć E aby określić notację wykładniczą.

SELECT FORMAT(1234.56789, 'E');

Wynik:

1.234568E+003  

szesnastkowy

Możesz nawet sformatować liczbę jako szesnastkową. Aby to zrobić, użyj X argument:

SELECT FORMAT(10, 'X');

Wynik:

A

System szesnastkowy ma podstawę 16. Dlatego liczba wynosi 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F przed ponownym rozpoczęciem (np. 10 w systemie szesnastkowym jest odpowiednikiem 16 w postaci dziesiętnej, a 11 jest odpowiednikiem 17 itd.). Dlatego przykład tutaj daje wynik A , ponieważ szesnastkowo A występuje po 9 .

Oto kolejny przykład, tym razem z większą liczbą:

SELECT FORMAT(7145, 'X');

Wynik:

1BE9

Format niestandardowy

Możesz również utworzyć własny format niestandardowy, używając niestandardowego ciągu formatu liczb. Składa się z serii niestandardowych specyfikatorów formatu liczb, które zapewniają wzorzec dla twojego numeru.

Łatwiej to wyjaśnić na przykładzie:

SELECT FORMAT(123456789, '##-###-####');

Wynik:

12-345-6789

W tym przypadku używam symbolu zastępczego cyfry (# ). Symbol zastępczy cyfry pozwala mi określić format numeru za pomocą # symbol jako symbol zastępczy dla każdej liczby.

Przecinki

Inny przykład:

SELECT FORMAT(123456789, '#,#');

Wynik:

123,456,789

Wiodące zera

Innym niestandardowym specyfikatorem formatu liczb jest zero (0 ). Możesz użyć tego do uzupełnienia liczby wiodącymi zerami:

SELECT
    FORMAT(7, '000') AS 'Example 1',
    FORMAT(123, '0000') AS 'Example 2',
    FORMAT(123, '00000') AS 'Example 3';

Wynik:

Example 1  Example 2  Example 3
---------  ---------  ---------
007        0123       00123    

Możesz go również użyć do usunięcia zer:

SELECT 
    FORMAT(0123, '000') AS 'Example 1',
    FORMAT(0123, '0000') AS 'Example 2',
    FORMAT(000123, '00000') AS 'Example 3';

Wynik:

Example 1  Example 2  Example 3
---------  ---------  ---------
123        0123       00123    

Informacje o specyfikatorach formatu liczbowego

Poniższe artykuły zawierają wszystkie specyfikatory formatu liczb, których można używać z FORMAT() funkcji, wraz z przykładami T-SQL.

  • Standardowe ciągi formatu numerycznego
  • Niestandardowe ciągi formatu liczb

Są to te same specyfikatory formatu, które są obsługiwane przez .NET Framework (FORMAT() funkcja opiera się na .NET Framework).

Data i godzina

FORMAT() funkcja pozwala również na formatowanie daty i czasu.

Data i godzina mają osobny zestaw specyfikatorów formatu:

  • Ciągi standardowego formatu daty i godziny
  • Niestandardowe ciągi formatu daty i godziny

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego używać klucza podstawowego nie zerowego w TSQL?

  2. Wstawianie zbiorcze programu SQL Server — część 2

  3. Uzyskiwanie i instalacja Microsoft SQL Server Management Studio

  4. Jak usunąć bazę danych za pomocą TSQL i GUI — SQL Server / samouczek TSQL część 25

  5. Jakie jest znaczenie przedrostka N w instrukcjach T-SQL i kiedy należy go używać?