sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan formateres tal i PostgreSQL

Når du arbejder med Postgres, kan du bruge to_char() funktion til at udlæse tal i et givet format.

Måden det fungerer på er, at du giver to argumenter. Det første argument er det tal, der skal formateres. Det andet argument bestemmer, hvordan det formateres.

Returværdien er tekst .

Afhængigt af dine krav foretrækker du måske at konvertere tallet til den relevante datatype, for eksempel ved at bruge cast() funktion.

Eksempler på begge metoder er nedenfor.

Eksempel

Her er et grundlæggende eksempel at demonstrere.

SELECT to_char(10, '99.99');

Resultat:

10.00

9 s har faktisk en særlig betydning i denne sammenhæng. Dette tegn er et af de gyldige skabelonmønstre, som din formatstreng kan bestå af, når du formaterer tal.

I tilfælde af 9 , den angiver en cifferposition, men hvis det er et indledende nul, vil det blive erstattet af et mellemrum, mens hvis det er et efterfølgende nul, og udfyldningstilstanden er angivet, vil det blive slettet.

Hvis jeg fjerner decimal- og brøksekunderdelen, får jeg et andet resultat.

SELECT to_char(10, '99');

Resultat:

10

Drop førende nuller

Du kan erstatte 9 med 0 hvis du vil undertrykke førende og efterfølgende nuller, selv når de er ubetydelige.

Her er et eksempel, der viser forskellen mellem de to.

SELECT 
  to_char(0010, '9999') AS "9999",
  to_char(0010, '0000') AS "0000";

Resultat:

 9999  | 0000  
-------+-------
    10 |  0010

Skabelonmønstre

Som det fremgår af de foregående eksempler, består formatstrengen af ​​et eller flere skabelonmønstre.

For eksempel 9999 er en formatstreng, der består af fire skabelonmønstre – som hver er 9 .

Decimalen er et andet skabelonmønster.

Jeg kunne have brugt en D i stedet for decimalen. Det bruger den aktuelle lokalitet til den faktiske formatering.

SELECT 
  to_char(10, '99.99') AS "99.99",
  to_char(10, '99D99') AS "99D99";

Resultat:

 99.99  | 99D99  
--------+--------
  10.00 |  10.00

For en komplet liste over skabelonmønstre og modifikatorer, se skabelonmønstre og modifikatorer til numerisk formatering i Postgres.

Skabelonmønstermodifikator

Der er også et par modifikatorer, der kan bruges sammen med skabelonmønsteret. Disse ændrer den måde, outputtet formateres på, afhængigt af den anvendte modifikator.

Specifikt er der tre modifikatorer, der kan bruges med numerisk formatering.

Modifier Beskrivelse
FM præfiks udfyldningstilstand (undertrykke efterfølgende nuller og udfyldningsblanketter)
TH suffiks ordinaltalsuffiks med store bogstaver
th suffiks suffiks for små bogstaver i ordenstal

Bemærk, at den første tilføjes som et præfiks til skabelonmønsteret, og de to andre tilføjes som et suffiks.

Ordinaltal

Et almindeligt krav er at konvertere et tal til dets orden. Vi kan bruge enten TH eller th for det, alt efter om vi vil have suffikset til at være store eller små bogstaver.

Her er et eksempel.

SELECT to_char(03, 'FM99th');

Resultat:

3rd

I dette tilfælde brugte jeg også FM for at undertrykke eventuelle tomme felter og efterfølgende nuller.

Her er en sammenligning mellem at bruge FM og udelade det:

SELECT 
  to_char(03, '99th') AS "99th",
  to_char(03, 'FM99th') AS "FM99th";

Resultat:

 99th  | FM99th 
-------+--------
   3rd | 3rd

Hvis du ser godt efter, har den første kolonne førende tomme felter, mens den anden kolonne ikke har.

Valuta

Et andet almindeligt krav er at udskrive et tal i en given valuta.

I dette tilfælde kan vi bruge L skabelonmønster for at vise et lokalitetsbevidst valutasymbol.

SELECT to_char(03, 'LFM99D00');

Resultat:

$3.00

Underskrevne numre

Der er også skabelonmønstre for signerede numre.

Her er et eksempel.

SELECT to_char(27, 'S99');

Resultat:

+27

Her brugte jeg S for at tilføje et lokalitetsbevidst skilt, der er forankret til nummeret.

I dette tilfælde var det et positivt tal. Her er et andet eksempel, der bruger en negativ værdi.

SELECT to_char(-27, 'S99');

Resultat:

-27

Der er flere andre skabelonmønstre, der kan bruges til signerede tal.

For eksempler, se Indsæt et plus-/minustegn til et tal i Postgres.

Og som nævnt, tjek skabelonmønstre og modifikatorer til numerisk formatering i Postgres for en komplet liste over skabelonmodifikatorer, som du kan bruge, når du formaterer tal.

Datatype

Som nævnt er to_char() funktion udsender sit resultat som tekst .

Afhængigt af dine krav vil du måske finde det bedre at konvertere nummeret til en mere passende datatype.

Her er et eksempel, der konverterer et tal til penge data type.

SELECT cast(10 as money);

Resultat:

$10.00

  1. Få autogenereret nøgle fra rækkeindsættelse i foråret 3 / PostgreSQL 8.4.9

  2. Sådan sorteres resultatet fra string_agg()

  3. Driver.getConnection hænger ved hjælp af SQLServer-driver og Java 1.6.0_29

  4. indstilling af global sql_mode i mysql