Większość głównych RDBMS zapewnia nam sposoby formatowania liczb za pomocą SQL. Niektóre zapewniają tylko podstawowe możliwości formatowania, podczas gdy inne są bardziej zaawansowane.
Poniżej znajdują się przykłady formatowania liczby w niektórych z bardziej popularnych RDBMS.
MySQL
W MySQL możemy użyć FORMAT()
funkcja formatowania liczby do określonego formatu. Ta funkcja akceptuje trzy parametry; liczba, liczba miejsc dziesiętnych i opcjonalne ustawienia regionalne:
SELECT FORMAT(123456.789, 2);
Wynik:
123,456.79
Jak wspomniano, możesz również przekazać trzeci argument, aby określić ustawienia regionalne używane dla wzorca formatowania. Zobacz Jak formatować liczby w MySQL jako przykład.
Aby sformatować liczby jako walutę, zobacz Jak formatować liczby jako walutę w MySQL.
Wyrocznia
Oracle Database daje nam wiele możliwości formatowania liczb.
W szczególności TO_CHAR(number)
funkcja pozwala nam sformatować liczbę w oparciu o nasz własny niestandardowy model formatu.
Przykład:
SELECT
TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;
Wynik:
$12,345.00
Pierwszy argument to liczba do sformatowania, a drugi argument to model formatu. Model formatu składa się z jednego lub więcej elementów formatu, z których każdy reprezentuje inny element w sformatowanym wyjściu.
W powyższym przykładzie używamy 9
znak reprezentujący każdą cyfrę, a 0
znak, aby wyprowadzić cyfrę lub zero (w zależności od tego, czy cyfra istnieje na tej pozycji). Używamy również G
dla separatora grup uwzględniającego ustawienia regionalne i D
dla separatora dziesiętnego uwzględniającego ustawienia regionalne. fm
element wyłącza wszelkie początkowe lub końcowe dopełnienie, które może zostać zastosowane do wyniku.
Oto pełna lista elementów formatu, których możesz użyć w swoim modelu formatu podczas formatowania liczb.
Istnieją inne sposoby formatowania liczb w Oracle. Na przykład LPAD()
Funkcja może być użyta do konwersji liczb na łańcuch i formatowania ich dokładnie tak, jak chcesz w locie. Funkcje takie jak CAST()
może również mieć wpływ na formatowanie liczby, w zależności od typu danych, na jaki jest rzutowana.
Zobacz Jak formatować liczby w Oracle, aby uzyskać więcej szczegółów i przykłady.
PostgreSQL
Podobnie jak Oracle, PostgreSQL ma również funkcję TO_CHAR()
funkcja i działa w bardzo podobny sposób:
SELECT TO_CHAR(923, 'fm000G000th');
Wynik:
000,923rd
Tutaj użyłem 0
element formatu do wyprowadzania zer wiodących, nawet jeśli oryginalna liczba nie zawierała żadnych cyfr w tym miejscu. W tym przypadku użyłem th
element formatu, aby przekonwertować liczbę na jej liczbę porządkową. Użyłem również G
dla separatora grup uwzględniającego lokalizację.
Oto lista wzorców szablonów, z których może składać się ciąg formatujący podczas formatowania liczb, a także modyfikatory formatu.
Innym sposobem formatowania liczby w PostgreSQL jest przekonwertowanie jej na money
typ danych. Liczby przechowywane jako money
typ jest wyprowadzany w formacie uwzględniającym ustawienia regionalne, z odpowiednim symbolem waluty, separatorem grup, separatorem dziesiętnym itp.:
SELECT CAST(10000 as money);
Wynik:
$10,000.00
Zobacz Jak formatować liczby w PostgreSQL, aby uzyskać więcej przykładów formatowania liczb w PostgreSQL.
Serwer SQL
SQL Server ma FORMAT()
funkcja, która działa podobnie do funkcji TO_CHAR()
w Oracle i PostgreSQL funkcja, ponieważ umożliwia formatowanie liczb na podstawie ciągu formatującego:
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 | +------------+----------------+-------------+
Ten przykład ilustruje trzy standardowe specyfikatory formatu — z których każdy wyprowadza liczbę w określonym formacie.
Możemy również użyć naszych własnych niestandardowych specyfikatorów formatu, które pozwalają nam tworzyć własny format, na wypadek gdyby standardowy format nie był tym, czego chcemy.
Możesz także robić takie rzeczy, jak formatowanie liczb w ich odpowiedniku szesnastkowym lub używanie notacji wykładniczej itp.
I możesz przekazać opcjonalny trzeci argument, aby określić ustawienia regionalne, dla których należy sformatować liczbę (formatuje liczbę zgodnie z konwencją tego języka).
Zobacz Jak formatować liczby w SQL Server, aby uzyskać więcej przykładów.
MariaDB
Podobnie jak MySQL, MariaDB ma FORMAT()
funkcja, która zapewnia podstawowe formatowanie liczb.
Oto przykład użycia tej funkcji do sformatowania liczby przy użyciu różnych lokalizacji:
SELECT
FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India",
FORMAT(123456.789, 2, 'de_DE') AS "German, Germany",
FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";
Wynik:
+--------------+-----------------+--------------------+ | Tamil, India | German, Germany | Chinese, Hong Kong | +--------------+-----------------+--------------------+ | 1,23,456.79 | 123.456,79 | 123,456.79 | +--------------+-----------------+--------------------+
Zobacz Jak formatować liczby w MariaDB, aby uzyskać więcej przykładów.
SQLite
SQLite jest bardziej ograniczony niż inne DBMS, jeśli chodzi o formatowanie liczb. Istnieją jednak sposoby na uzyskanie podstawowego formatowania liczb:
SELECT PRINTF("%,d", 123456789);
Wynik:
123,456,789
PRINTF()
funkcja może wyprowadzać separatory grup dla liczb całkowitych, ale nie dla liczb rzeczywistych/zmiennoprzecinkowych. Aby sformatować liczby rzeczywiste/zmiennoprzecinkowe, będziesz musiał wykonać trochę więcej pracy. Zobacz Formatowanie liczb z przecinkiem w SQLite na przykład tego, co mam na myśli.
Aktualizacja :SQLite 3.38.0 (wydany 22 lutego 2022) zmienił nazwę PRINTF()
funkcja 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