sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man ändrar språk när man formaterar nummer i PostgreSQL

Om du formaterar ett tal i PostgreSQL och du vill ändra språket så att rätt grupp- och decimalavgränsare används, så kan du göra det så här.

Det finns två systemvariabler av intresse:

lc_monetary Ställer in lokalen som ska användas för att formatera monetära belopp.
lc_numeric Ställer in lokalen som ska användas för att formatera siffror.

Dessa kan ställas in med SET uttalande.

Till exempel:

SET lc_numeric = 'en_US';

Resultat:

SET

Efter att ha ställt in det, fungerar som TO_CHAR() kommer att formatera nummer enligt en_US format.

Exempel

Här är några exempel som visar hur dessa variabler kan påverka utdata:

lc_monetary Variabel

Här är ett exempel på hur du ställer in lc_monetary variabel:

SET lc_monetary = 'en_US';
SELECT CAST(123456.789 AS money);

Resultat:

$123,456.79

Och här använder den en annan plats:

SET lc_monetary = 'de_DE';
SELECT CAST(123456.789 AS money);

Resultat:

Eu123.456,79

lc_numeric Variabel

Här är ett exempel på hur du ställer in lc_numeric variabel och sedan formatera ett tal med TO_CHAR() funktion:

SET lc_numeric = 'en_US';
SELECT TO_CHAR(123456.789, 'fm999G999D99');

Resultat:

123,456.79

Och här använder den en annan plats:

SET lc_numeric = 'de_DE';
SELECT TO_CHAR(123456.789, 'fm999G999D99');

Resultat:

123.456,79

Kontrollera de aktuella inställningarna

Du kan kontrollera dina nuvarande inställningar med SHOW kommando.

Exempel:

SHOW lc_monetary;

Resultat:

en_US

Och:

SHOW lc_numeric;

Resultat:

de_DE

Återställ tillbaka till standardvärdena

Du kan använda följande för att återställa varje variabel till dess standardinställning:

SET lc_monetary TO DEFAULT;
SHOW lc_monetary;

Resultat:

en_US.UTF-8

Och för lc_numeric :

SET lc_numeric TO DEFAULT;
SHOW lc_numeric;

Resultat:

en_US.UTF-8

Lokalerna som är tillgängliga på ditt system och deras namn beror på vad som tillhandahålls av operativsystemsleverantören och vad som installerades. Se PostgreSQL:s dokumentation om lokalstöd för mer information.


  1. Hur man förhindrar SQL-injektionsattacker med Secure

  2. Konvertera siffror/siffror i ord för INR-valuta (indiska rupier) i Oracle PL/SQL

  3. Table Print passar inte till sidstorleken

  4. SQLITE kan inte uppgradera skrivskyddad databas från version 1 till 2