Niektóre DBMS mają funkcje, które pozwalają nam formatować liczby jako walutę, po prostu przekazując odpowiedni ciąg formatujący. To konwertuje liczbę na ciąg znaków z odpowiednim symbolem waluty, separatorem grupy i kropką dziesiętną (jeśli dotyczy).
Inne DBMS nie ułatwiają tego i musisz najpierw trochę popracować.
Poniżej znajdują się przykłady użycia SQL do formatowania liczb jako waluty w niektórych z najpopularniejszych DBMS.
Wyrocznia
Oracle Database udostępnia nam TO_CHAR(number)
funkcja, która pozwala nam formatować liczby poprzez przekazanie modelu formatu (lub ciągu formatującego). Możemy użyć tej funkcji, aby zwrócić liczbę jako walutę.
Oracle zapewnia kilka elementów formatu do zwracania symbolu waluty, w zależności od wymaganego symbolu waluty – symbol waluty lokalnej, symbol waluty ISO lub symbol podwójnej waluty.
Oto przykład wszystkich trzech:
ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;
Wynik:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Zobacz Jak sformatować liczbę jako walutę w Oracle, aby uzyskać więcej informacji i przykładów.
Serwer SQL
SQL Server udostępnia funkcję FORMAT(), która umożliwia formatowanie liczb i dat. C
specyfikator formatu może być użyty do zwrócenia liczby jako waluty:
SELECT FORMAT(1234, 'C');
Wynik:
$1,234.00
Są inne rzeczy, które można zrobić z ciągiem formatującym, na przykład określić, ile miejsc dziesiętnych ma zostać zwróconych.
Funkcja akceptuje również opcjonalny trzeci argument, którego można użyć do określenia ustawień regionalnych do formatowania liczb i walut. Różne lokalizacje używają różnych konwencji dotyczących numerów i waluty.
Zobacz Jak formatować liczby jako walutę w SQL Server (T-SQL), aby uzyskać więcej informacji i przykładów.
PostgreSQL
PostgreSQL ma money
typ danych, który zazwyczaj będzie sformatowany w walucie lokalnej, gdy dane wyjściowe:
SELECT CAST(3145 as money);
Wynik:
$3,145.00
PostgreSQL ma również funkcję TO_CHAR()
funkcja, która konwertuje wartość na ciąg i formatuje ją na podstawie dostarczonego przez nas ciągu formatującego. Dlatego możemy go użyć do sformatowania liczb jako waluty, przekazując odpowiedni ciąg formatujący.
Zobacz Jak formatować liczby jako walutę w PostgreSQL, aby uzyskać więcej informacji.
MySQL
W MySQL musimy wykonać trochę więcej pracy. MySQL nie dostarcza nam specyfikatora formatu dla symbolu waluty, więc musimy podać własny:
SELECT CONCAT('$', FORMAT(1234.5678, 2));
Wynik:
$1,234.57
Tutaj użyliśmy CONCAT()
funkcja do łączenia symbolu waluty i liczby, a my użyliśmy FORMAT()
funkcja, aby sformatować liczbę w żądanym formacie.
Istnieje możliwość określenia ustawień regionalnych dla formatowania liczb. To określa, które znaki są używane jako separator grup i kropka dziesiętna.
Zobacz Jak formatować liczby jako walutę w MySQL, aby uzyskać więcej informacji.
MariaDB
MariaDB jest bardzo podobna do MySQL i możemy użyć tej samej metody, której używaliśmy w MySQL.
Oto przykład określający ustawienia regionalne używane do formatowania liczb:
SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));
Wynik:
€8.790,24
W tym przypadku podaliśmy symbol Euro (€
) i sformatowano liczbę zgodnie z konwencjami używanymi w Niemczech.
Zobacz Formatowanie liczby jako waluty w MariaDB, aby uzyskać więcej informacji.
SQLite
SQLite ma funkcję PRINTF()
funkcja, która pozwala nam sformatować liczbę na podstawie ciągu formatującego. Na przykład możemy użyć tego do sformatowania liczby do określonej liczby miejsc po przecinku, plus dodać symbol waluty.
SELECT PRINTF("$%.2f", 123.457);
Wynik:
$123.46
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("$%.2f", 123.457);
Wynik:
$123.46
Zobacz dokumentację SQLite, aby uzyskać więcej informacji na temat FORMAT()
funkcja.