Als u met Postgres werkt, kunt u de to_char()
. gebruiken functie om getallen in een bepaald formaat uit te voeren.
De manier waarop het werkt is dat je twee argumenten geeft. Het eerste argument is het getal dat moet worden opgemaakt. Het tweede argument bepaalt hoe het wordt opgemaakt.
De retourwaarde is tekst .
Afhankelijk van uw vereisten, zou u er de voorkeur aan kunnen geven het nummer naar het juiste gegevenstype te converteren, bijvoorbeeld met behulp van de cast()
functie.
Voorbeelden van beide methoden staan hieronder.
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren.
SELECT to_char(10, '99.99');
Resultaat:
10.00
De 9
s hebben in deze context eigenlijk een speciale betekenis. Dit teken is een van de geldige sjabloonpatronen waaruit uw opmaakreeks kan bestaan bij het opmaken van getallen.
In het geval van 9
, het specificeert een cijferpositie, maar als het een voorloopnul is, wordt deze vervangen door een spatie, terwijl als het een volgnul is en de vulmodus is opgegeven, deze wordt verwijderd.
Als ik het gedeelte achter de komma en de fractie van seconden verwijder, krijg ik een ander resultaat.
SELECT to_char(10, '99');
Resultaat:
10
Laat voorloopnullen vallen
U kunt 9
vervangen met 0
als u voorloop- en volgnullen wilt onderdrukken, zelfs als ze onbeduidend zijn.
Hier is een voorbeeld dat het verschil tussen de twee laat zien.
SELECT
to_char(0010, '9999') AS "9999",
to_char(0010, '0000') AS "0000";
Resultaat:
9999 | 0000 -------+------- 10 | 0010
Sjabloonpatronen
Zoals te zien is in de vorige voorbeelden, bestaat de opmaakreeks uit een of meer sjabloonpatronen.
Bijvoorbeeld 9999
is een opmaakreeks die bestaat uit vier sjabloonpatronen – die elk 9
. zijn .
De decimale plaats is een ander sjabloonpatroon.
Ik had een D
kunnen gebruiken in plaats van de komma. Dat gebruikt de huidige landinstelling voor de eigenlijke opmaak.
SELECT
to_char(10, '99.99') AS "99.99",
to_char(10, '99D99') AS "99D99";
Resultaat:
99.99 | 99D99 --------+-------- 10.00 | 10.00
Zie Sjabloonpatronen en -modificaties voor numerieke opmaak in Postgres voor een volledige lijst met sjabloonpatronen en -modificaties.
Sjabloonpatroonmodificaties
Er zijn ook een paar modifiers die samen met het sjabloonpatroon kunnen worden gebruikt. Deze veranderen de manier waarop de uitvoer wordt geformatteerd, afhankelijk van de gebruikte modifier.
Er zijn met name drie modifiers die kunnen worden gebruikt met numerieke opmaak.
Modificatie | Beschrijving |
---|---|
FM voorvoegsel | vulmodus (onderdruk nullen en opvulspaties) |
TH achtervoegsel | hoofdletters volgnummer achtervoegsel |
th achtervoegsel | achtervoegsel volgnummer in kleine letters |
Merk op dat de eerste wordt toegevoegd als een voorvoegsel aan het sjabloonpatroon en de andere twee als een achtervoegsel.
Rangnummers
Een veel voorkomende vereiste is om een getal om te zetten in zijn rangtelwoord. We kunnen ofwel TH
. gebruiken of th
daarvoor, afhankelijk van of we willen dat het achtervoegsel een hoofdletter of een kleine letter is.
Hier is een voorbeeld.
SELECT to_char(03, 'FM99th');
Resultaat:
3rd
In dit geval gebruikte ik ook FM
om spaties en nullen te onderdrukken.
Hier is een vergelijking tussen het gebruik van FM
en het weglaten:
SELECT
to_char(03, '99th') AS "99th",
to_char(03, 'FM99th') AS "FM99th";
Resultaat:
99th | FM99th -------+-------- 3rd | 3rd
Als je goed kijkt, heeft de eerste kolom voorloopspaties, terwijl de tweede kolom dat niet heeft.
Valuta
Een andere veelvoorkomende vereiste is om een getal in een bepaalde valuta uit te voeren.
In dit geval kunnen we de L
. gebruiken sjabloonpatroon om een locale-bewust valutasymbool weer te geven.
SELECT to_char(03, 'LFM99D00');
Resultaat:
$3.00
Getekende nummers
Er zijn ook sjabloonpatronen voor ondertekende nummers.
Hier is een voorbeeld.
SELECT to_char(27, 'S99');
Resultaat:
+27
Hier gebruikte ik S
om een locale-bewust teken toe te voegen dat aan het nummer is verankerd.
In dit geval was het een positief getal. Hier is nog een voorbeeld dat een negatieve waarde gebruikt.
SELECT to_char(-27, 'S99');
Resultaat:
-27
Er zijn verschillende andere sjabloonpatronen die kunnen worden gebruikt voor ondertekende nummers.
Zie Een plus-/minteken toevoegen aan een getal in Postgres voor voorbeelden.
En zoals gezegd, bekijk Sjabloonpatronen en -modificaties voor numerieke opmaak in Postgres voor een volledige lijst met sjabloonaanpassers die je kunt gebruiken bij het opmaken van getallen.
Gegevenstype
Zoals gezegd, de to_char()
functie geeft het resultaat als tekst .
Afhankelijk van uw vereisten, vindt u het misschien beter om het getal om te zetten in een geschikter gegevenstype.
Hier is een voorbeeld dat een getal converteert naar de geld gegevens typ.
SELECT cast(10 as money);
Resultaat:
$10.00