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ć.