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