Sommige DBMS'en hebben functies waarmee we getallen als valuta kunnen opmaken door de juiste opmaakreeks door te geven. Dit converteert het getal naar een tekenreeks met het toepasselijke valutasymbool, groepsscheidingsteken en decimaalteken (indien relevant).
Andere DBMS'en maken het niet zo gemakkelijk, en je moet eerst wat werk verzetten.
Hieronder staan voorbeelden van het gebruik van SQL om getallen op te maken als valuta in enkele van de meest populaire DBMS'en.
Oracle
Oracle Database geeft ons de TO_CHAR(number)
functie, waarmee we getallen kunnen opmaken door een opmaakmodel (of opmaakreeks) door te geven. We kunnen deze functie gebruiken om een getal als valuta terug te geven.
Oracle biedt een aantal indelingselementen voor het retourneren van het valutasymbool, afhankelijk van het valutasymbool dat u nodig heeft:het lokale valutasymbool, het ISO-valutasymbool of het dubbele valutasymbool.
Hier is een voorbeeld van alle drie:
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;
Resultaat:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Zie Een getal opmaken als valuta in Oracle voor meer informatie en voorbeelden.
SQL-server
SQL Server biedt de functie FORMAT() waarmee we getallen en datums kunnen opmaken. De C
formaatspecificatie kan worden gebruikt om een getal als valuta terug te geven:
SELECT FORMAT(1234, 'C');
Resultaat:
$1,234.00
Er zijn nog andere dingen die u kunt doen met de opmaakreeks, zoals opgeven hoeveel decimalen u wilt retourneren.
De functie accepteert ook een optioneel derde argument, dat kan worden gebruikt om de landinstelling op te geven die moet worden gebruikt voor de opmaak van getallen en valuta. Verschillende landen gebruiken verschillende conventies voor hun nummers en valuta.
Zie Getallen opmaken als valuta in SQL Server (T-SQL) voor meer informatie en voorbeelden.
PostgreSQL
PostgreSQL heeft een money
gegevenstype dat doorgaans wordt opgemaakt in de lokale valuta bij uitvoer:
SELECT CAST(3145 as money);
Resultaat:
$3,145.00
PostgreSQL heeft ook een TO_CHAR()
functie die de waarde converteert naar een tekenreeks en deze opmaakt op basis van de opmaakreeks die we leveren. Daarom kunnen we het gebruiken om getallen als valuta op te maken door de juiste notatiereeks door te geven.
Zie Getallen opmaken als valuta in PostgreSQL voor meer informatie.
MySQL
In MySQL moeten we wat meer werk doen. MySQL biedt ons geen formaatspecificatie voor het valutasymbool, dus we moeten onze eigen opgeven:
SELECT CONCAT('$', FORMAT(1234.5678, 2));
Resultaat:
$1,234.57
Hier gebruikten we de CONCAT()
functie om het valutasymbool en het getal samen te voegen, en we gebruikten de FORMAT()
functie om het getal in ons gewenste formaat op te maken.
Het is mogelijk om een landinstelling op te geven voor de numerieke opmaak. Dit bepaalt welke tekens worden gebruikt voor het groepsscheidingsteken en de komma.
Zie Getallen opmaken als valuta in MySQL voor meer informatie.
MariaDB
MariaDB lijkt erg op MySQL en we kunnen dezelfde methode gebruiken die we met MySQL hebben gebruikt.
Hier is een voorbeeld dat een landinstelling specificeert die moet worden gebruikt voor de getalnotatie:
SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));
Resultaat:
€8.790,24
In dit geval hebben we het eurosymbool (€
) en het nummer opgemaakt om de nummeringsconventies te gebruiken die in Duitsland worden gebruikt.
Zie Een getal opmaken als valuta in MariaDB voor meer informatie.
SQLite
SQLite heeft een PRINTF()
functie waarmee we een getal kunnen opmaken op basis van een opmaakreeks. We kunnen dit bijvoorbeeld gebruiken om het getal op te maken tot een bepaald aantal decimalen, plus een valutasymbool toevoegen.
SELECT PRINTF("$%.2f", 123.457);
Resultaat:
$123.46
Bijwerken :SQLite 3.38.0 (uitgebracht op 22 februari 2022) hernoemde de PRINTF()
functie naar FORMAT()
. De originele PRINTF()
naam wordt behouden als een alias voor achterwaartse compatibiliteit.
Dus het bovenstaande voorbeeld kan hier in veranderd worden:
SELECT FORMAT("$%.2f", 123.457);
Resultaat:
$123.46
Zie de SQLite-documentatie voor meer informatie over de FORMAT()
functie.