sql >> Database >  >> RDS >> PostgreSQL

Getallen opmaken met komma's in PostgreSQL

In PostgreSQL kunnen we de TO_CHAR() . gebruiken functie om getallen in een bepaald formaat op te maken. Dit omvat het opmaken van getallen met komma's op de relevante locatie.

PostgreSQL heeft ook een money gegevenstype, dat de waarde uitvoert met behulp van de huidige landinstelling. Dit kan komma's bevatten op de juiste plaats, afhankelijk van de landinstelling die wordt gebruikt.

De TO_CHAR() Functie

Hier is een voorbeeld van het gebruik van de TO_CHAR() functie om een ​​getal met komma's uit te voeren:

SELECT TO_CHAR(123456.78, 'fm999G999D99');

Resultaat:

123,456.78

Het tweede argument bestaat uit een aantal numerieke sjabloonpatronen die bepalen hoe het eerste argument wordt opgemaakt.

Hier gebruikte ik de G sjabloonpatroon voor een lokaal-bewust groepsscheidingsteken (ook wel een 'duizenden-scheidingsteken' genoemd). Ik had een komma kunnen gebruiken (, ), maar dat zou niet locale-aware zijn geweest.

Ik heb ook de D . gebruikt sjabloonpatroon voor een locale-bewust decimaal scheidingsteken.

In dit geval heb ik ook fm . gebruikt (wat staat voor "Fill Mode") om eventuele achterliggende nullen en voorloopspaties te onderdrukken die mogelijk automatisch op het resultaat zijn toegepast.

De 9 sjabloonpatroon is voor elk cijfer. Je zou 0 . kunnen gebruiken in plaats daarvan als u voorloopnullen wilt opnemen.

Omdat de G en D sjabloonpatronen zijn locale-aware, ze kunnen het juiste teken voor de groep en decimale scheidingstekens produceren.

Hier is een voorbeeld om te laten zien wat ik bedoel:

SET lc_numeric = 'fr_FR';
SELECT TO_CHAR(123456.78, 'fm999G999D99');

Resultaat:

123,456.78

Nu wordt het groepsscheidingsteken weergegeven door een punt/punt, en het decimale scheidingsteken wordt weergegeven door een komma. Dit komt omdat ik de lc_numeric . heb gewijzigd variabele om fr_FR te gebruiken (voor Frankrijk), en het is de Franse gewoonte om het groepsscheidingsteken en de decimale punt op deze manier weer te geven.

Verschillende landinstellingen hebben verschillende conventies voor het opmaken van getallen, en de G en D formaatmodifiers kunnen bepalen welke tekens moeten worden gebruikt voor groepsscheidingstekens en het decimale scheidingsteken.

Het money Gegevenstype

PostgreSQL heeft een money gegevenstype dat de waarden op een locale bewuste manier opmaakt.

Voorbeeld:

SET lc_monetary = 'en_US';
SELECT CAST(123456.78 AS money);

Resultaat:

$123,456.78

Laten we nu de lc_monetary . wijzigen variabele en kijk hoe dit de output beïnvloedt:

SET lc_monetary = 'fr_FR';
SELECT CAST(123456.78 AS money);

Resultaat:

123 456,78 Eu

In dit geval wordt het groepsscheidingsteken weergegeven door een spatie en het decimale scheidingsteken is een komma.


  1. Een kolom uit .sqlite halen die meerdere tabellen met meerdere kolommen bevat

  2. MySQL Tabelkolom wijzigen

  3. onCreate() van RoomDatabase.Callback() is niet aangeroepen na een succesvolle aanroep van .build()

  4. PL/SQL - Voorbeeld van toepassingsfout verhogen