Większość głównych RDBMS ma funkcje, które umożliwiają nam formatowanie liczb za pomocą przecinków jako separatora grup lub separatora dziesiętnego.
Niektóre RDBMS wyświetlają również pewne typy danych numerycznych z przecinkami w odpowiednim miejscu.
Poniżej znajdują się przykłady formatowania liczb z przecinkami w niektórych bardziej popularnych DBMS.
MySQL
W MySQL możemy użyć FORMAT()
funkcja formatowania liczb z przecinkami:
SELECT FORMAT(123456.789, 2);
Wynik:
123,456.79
Nie ma potrzeby określania, gdzie powinny iść przecinki. Funkcja wie, gdzie je umieścić.
Ta funkcja akceptuje również trzeci argument określający ustawienia regionalne. Nie wszystkie lokalizacje używają przecinka jako separatora grup — niektóre lokalizacje używają przecinka jako separatora dziesiętnego. FORMAT()
funkcja jest wystarczająco inteligentna, aby wiedzieć, której konwencji użyć.
Przykład:
SELECT FORMAT(123456.789, 2, 'de_DE');
Wynik:
123.456,79
Wyrocznia
W Oracle możemy użyć TO_CHAR()
funkcja formatowania liczby z przecinkami:
SELECT TO_CHAR(12345, 'fm99G999D00')
FROM DUAL;
Wynik:
12,345.00
G
element format jest symbolem zastępczym dla separatora grup, a D
jest separatorem dziesiętnym.
W takim przypadku separator grup wyprowadza przecinek, a znak dziesiętny wyprowadza kropkę. To dlatego, że NLS_TERRITORY
mojej obecnej sesji parametr jest ustawiony na Australia
.
To prawda, że zamiast G
moglibyśmy użyć zakodowanego na stałe przecinka format elementu, ale zakłada się, że separatorem grupy jest przecinek. Nie wszystkie lokalizacje używają przecinka jako separatora grup.
Zobacz Jak formatować liczbę z przecinkiem w Oracle, aby uzyskać więcej informacji i przykładów formatowania liczb z przecinkami w Oracle.
Serwer SQL
W SQL Server możemy użyć FORMAT()
funkcja formatowania liczb z przecinkami. Ta funkcja akceptuje liczbę i ciąg formatu:
SELECT
FORMAT(123456.789, 'N') AS "Number",
FORMAT(123456.789, 'P') AS "Percent",
FORMAT(123456.789, 'C') AS "Currency";
Wynik:
+------------+----------------+-------------+ | Number | Percent | Currency | |------------+----------------+-------------| | 123,456.79 | 12,345,678.90% | $123,456.79 | +------------+----------------+-------------+
Funkcja akceptuje również opcjonalny argument „culture” określający ustawienia regionalne używane dla sformatowanego wyjścia.
Możesz także skonstruować własny niestandardowy ciąg formatu, aby móc dokładnie określić, gdzie znajduje się każdy separator tysięcy i separator dziesiętny.
Zobacz Jak formatować liczby za pomocą przecinków w SQL Server, aby zapoznać się z przykładami.
PostgreSQL
PostgreSQL ma funkcję TO_CHAR()
funkcja, która działa jak funkcja Oracle o tej samej nazwie:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Wynik:
123,456.78
Ta funkcja jest świadoma ustawień regionalnych, więc przedstawi odpowiednią grupę i separatory dziesiętne dla ustawień regionalnych.
PostgreSQL ma również money
typ danych, który jest wyprowadzany w formacie uwzględniającym ustawienia regionalne. Zobacz przykład Formatowanie liczb z przecinkami w PostgreSQL.
SQLite
SQLite jest nieco bardziej ograniczony w porównaniu z większością innych DBMS. Ma jednak funkcję printf()
funkcja, która pozwala nam formatować liczby zgodnie z ciągiem formatującym:
SELECT printf("%,d", 123456789);
Wynik:
123,456,789
Działa to dobrze z liczbami całkowitymi, ale liczby rzeczywiste/zmiennoprzecinkowe wymagają nieco więcej pracy. Zobacz Formatowanie liczb z przecinkiem w SQLite, aby uzyskać więcej informacji na ten temat.
Aktualizacja :SQLite 3.38.0 (wydany 22 lutego 2022) zmienił nazwę printf()
funkcja do format()
. Oryginalny printf()
nazwa jest zachowywana jako alias dla wstecznej kompatybilności.
Więc powyższy przykład można zmienić na następujący:
SELECT format("%,d", 123456789);
Wynik:
123,456,789
MariaDB
W MariaDB możemy użyć FORMAT()
funkcja formatowania liczby z przecinkami:
SELECT FORMAT(123456.789, 2);
Wynik:
123,456.79
Podobnie jak w przypadku funkcji MySQL o tej samej nazwie, nie ma potrzeby określania, gdzie powinny znajdować się przecinki. Funkcja wie, gdzie je umieścić.