sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man formaterar siffror i PostgreSQL

När du arbetar med Postgres kan du använda to_char() funktion för att mata ut tal i ett givet format.

Hur det fungerar är att du ger två argument. Det första argumentet är talet som ska formateras. Det andra argumentet avgör hur det formateras.

Returvärdet är text .

Beroende på dina krav kanske du föredrar att konvertera numret till lämplig datatyp, till exempel med cast() funktion.

Exempel på båda metoderna finns nedan.

Exempel

Här är ett grundläggande exempel att visa.

SELECT to_char(10, '99.99');

Resultat:

10.00

9 s har faktiskt speciell betydelse i detta sammanhang. Det här tecknet är ett av de giltiga mallmönster som din formatsträng kan bestå av när du formaterar siffror.

I fallet med 9 , den anger en sifferposition, men om det är en inledande nolla kommer den att ersättas av ett mellanslag, medan om det är en avslutande nolla och fyllningsläge anges så kommer den att raderas.

Om jag tar bort decimalen och bråkdelssekundersdelen får jag ett annat resultat.

SELECT to_char(10, '99');

Resultat:

10

Släpp inledande nollor

Du kan ersätta 9 med 0 om du vill undertrycka inledande och efterföljande nollor, även när det är obetydligt.

Här är ett exempel som visar skillnaden mellan de två.

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

Resultat:

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

Mallmönster

Som framgår av de tidigare exemplen består formatsträngen av ett eller flera mallmönster.

Till exempel 9999 är en formatsträng som består av fyra mallmönster – var och en är 9 .

Decimalen är ett annat mallmönster.

Jag kunde ha använt en D istället för decimalen. Som använder den aktuella lokalen för den faktiska formateringen.

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

Resultat:

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

För en fullständig lista över mallmönster och modifierare, se Mallmönster och modifierare för numerisk formatering i Postgres.

Mallmönstermodifierare

Det finns också några modifierare som kan användas tillsammans med mallmönstret. Dessa ändrar hur utdata formateras, beroende på vilken modifierare som används.

Specifikt finns det tre modifierare som kan användas med numerisk formatering.

Modifierare Beskrivning
FM prefix fyllningsläge (dämpa efterföljande nollor och utfyllnadsblanketter)
TH suffix versal ordningsnummersuffix
th suffix suffix för ordningstal med små bokstäver

Observera att den första läggs till som ett prefix till mallmönstret och de andra två läggs till som ett suffix.

Ordningsnummer

Ett vanligt krav är att konvertera ett tal till dess ordningsföljd. Vi kan använda antingen TH eller th för det, beroende på om vi vill att suffixet ska vara versaler eller gemener.

Här är ett exempel.

SELECT to_char(03, 'FM99th');

Resultat:

3rd

I det här fallet använde jag också FM för att undertrycka alla tomrum och avslutande nollor.

Här är en jämförelse mellan att använda FM och utelämna det:

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

Resultat:

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

Om du tittar noga har den första kolumnen inledande tomrum, medan den andra kolumnen inte har det.

Valuta

Ett annat vanligt krav är att mata ut ett nummer i en given valuta.

I det här fallet kan vi använda L mallmönster för att visa en lokal-medveten valutasymbol.

SELECT to_char(03, 'LFM99D00');

Resultat:

$3.00

Signerade nummer

Det finns också mallmönster för signerade nummer.

Här är ett exempel.

SELECT to_char(27, 'S99');

Resultat:

+27

Här använde jag S för att lägga till en platsmedveten skylt som är förankrad i numret.

I det här fallet var det ett positivt tal. Här är ett annat exempel som använder ett negativt värde.

SELECT to_char(-27, 'S99');

Resultat:

-27

Det finns flera andra mallmönster som kan användas för signerade nummer.

För exempel, se Lägg till ett plus-/minustecken till ett nummer i Postgres.

Och som nämnt, kolla in mallmönster och modifierare för numerisk formatering i Postgres för en fullständig lista över mallmodifierare som du kan använda när du formaterar tal.

Datatyp

Som nämnts, to_char() funktionen matar ut sitt resultat som text .

Beroende på dina krav kanske du tycker att det är bättre att konvertera numret till en mer lämplig datatyp.

Här är ett exempel som konverterar ett nummer till pengardata typ.

SELECT cast(10 as money);

Resultat:

$10.00

  1. Hur man ändrar bakgrundsfärg för formulärrubriker i Access 2016

  2. Avlasta mycket stora databaser

  3. Utforska SQL Server 2016 Query Store GUI

  4. Hitta närmaste datum i SQL Server