sql >> Database >  >> RDS >> PostgreSQL

Getallen opmaken in PostgreSQL

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

  1. Hoe tijdgegevens uit een tekenreeks in SQL Server te extraheren of om te zetten?

  2. Wat is de juiste JDBC URL-syntaxis als Oracle-wallets worden gebruikt?

  3. Alles wat u moet weten over SQL CTE op één plek

  4. Mogelijk om het standaardschema van de verbindingsreeks in te stellen?