sql >> Database teknologi >  >> NoSQL >> MongoDB

Formater et tal som valuta i SQL

Nogle DBMS'er har funktioner, der giver os mulighed for at formatere tal som valuta blot ved at sende den passende formatstreng. Dette konverterer tallet til en streng med det relevante valutasymbol, gruppeseparator og decimaltegn (hvis relevant).

Andre DBMS'er gør det ikke så nemt, og du skal gøre lidt arbejde først.

Nedenfor er eksempler på brug af SQL til at formatere tal som valuta i nogle af de mest populære DBMS'er.

Oracle

Oracle Database giver os TO_CHAR(number) funktion, som giver os mulighed for at formatere tal ved at sende en formatmodel (eller formatstreng). Vi kan bruge denne funktion til at returnere et tal som valuta.

Oracle har nogle få formatelementer til at returnere valutasymbolet, afhængigt af hvilket valutasymbol du har brug for – det lokale valutasymbol, ISO-valutasymbolet eller det dobbelte valutasymbol.

Her er et eksempel på alle tre:

ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT 
    TO_CHAR(12345, 'fmL99G999D00') AS "r1",
    TO_CHAR(12345, 'fmC99G999D00') AS "r3",
    TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;

Resultat:

            r1              r3            r3 
______________ _______________ _____________ 
kr12.345,00    DKK12.345,00    €12.345,00   

Se Sådan formateres et tal som valuta i Oracle for at få flere oplysninger og eksempler.

SQL-server

SQL Server leverer FORMAT()-funktionen, som gør det muligt for os at formatere tal og datoer. C formatangivelsen kan bruges til at returnere et tal som en valuta:

SELECT FORMAT(1234, 'C');

Resultat:

$1,234.00

Der er andre ting, du kan gøre med formatstrengen, såsom at angive, hvor mange decimaler, der skal returneres.

Funktionen accepterer også et valgfrit tredje argument, som kan bruges til at angive den landestandard, der skal bruges til tal- og valutaformatering. Forskellige lokaliteter bruger forskellige konventioner for deres tal og valuta.

Se Sådan formateres tal som valuta i SQL Server (T-SQL) for at få flere oplysninger og eksempler.

PostgreSQL

PostgreSQL har en money datatype, der typisk vil blive formateret i lokalvalutaen ved output:

SELECT CAST(3145 as money);

Resultat:

$3,145.00

PostgreSQL har også en TO_CHAR() funktion, der konverterer værdien til en streng og formaterer den baseret på den formatstreng, vi leverer. Derfor kan vi bruge det til at formatere tal som valuta ved at sende den passende formatstreng.

Se Sådan formateres tal som valuta i PostgreSQL for mere.

MySQL

I MySQL er vi nødt til at arbejde lidt mere. MySQL giver os ikke en formatspecifikation for valutasymbolet, så vi skal give vores egen:

SELECT CONCAT('$', FORMAT(1234.5678, 2));

Resultat:

$1,234.57

Her brugte vi CONCAT() funktion til at sammenkæde valutasymbolet og tallet, og vi brugte FORMAT() funktion til at formatere tallet til vores ønskede format.

Det er muligt at angive en lokalitet for den numeriske formatering. Dette bestemmer, hvilke tegn der bruges til gruppeseparator og decimaltegn.

Se Sådan formateres tal som valuta i MySQL for mere information.

MariaDB

MariaDB minder meget om MySQL, og vi kan bruge den samme metode, som vi brugte med MySQL.

Her er et eksempel, der angiver en lokalitet, der skal bruges til talformatering:

SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));

Resultat:

€8.790,24

I dette tilfælde har vi leveret eurosymbolet ( ) og formaterede nummeret til at bruge de nummereringskonventioner, der bruges i Tyskland.

Se Formater et tal som valuta i MariaDB for mere information.

SQLite

SQLite har en PRINTF() funktion, der giver os mulighed for at formatere et tal baseret på en formatstreng. For eksempel kan vi bruge dette til at formatere tallet til et givet antal decimaler, plus tilføje et valutasymbol.

SELECT PRINTF("$%.2f", 123.457);

Resultat:

$123.46

Opdater :SQLite 3.38.0 (frigivet 22. februar 2022) omdøbte PRINTF() funktion til FORMAT() . Den originale PRINTF() navnet bibeholdes som et alias for bagudkompatibilitet.

Så ovenstående eksempel kan ændres til dette:

SELECT FORMAT("$%.2f", 123.457);

Resultat:

$123.46

Se SQLite-dokumentationen for mere om FORMAT() funktion.


  1. Skalerbar måde at logge sideanmodningsdata fra en PHP-applikation?

  2. Azure-funktion med Cosmos MongoDB-integration gemmer ikke

  3. Oprettelse af testdata til MongoDB

  4. Indstil Mongo Timeout i Spring Boot