sql >> Databasteknik >  >> NoSQL >> MongoDB

Formatera ett tal som valuta i SQL

Vissa DBMS har funktioner som låter oss formatera siffror som valuta bara genom att skicka lämplig formatsträng. Detta konverterar talet till en sträng med tillämplig valutasymbol, gruppavgränsare och decimalkomma (om relevant).

Andra DBMS gör det inte så lätt, och du måste göra lite arbete först.

Nedan finns exempel på hur du använder SQL för att formatera siffror som valuta i några av de mest populära DBMS.

Oracle

Oracle Database ger oss TO_CHAR(number) funktion, som låter oss formatera tal genom att skicka en formatmodell (eller formatsträng). Vi kan använda den här funktionen för att returnera ett tal som valuta.

Oracle tillhandahåller några formatelement för att returnera valutasymbolen, beroende på vilken valutasymbol du behöver – den lokala valutasymbolen, ISO-valutasymbolen eller den dubbla valutasymbolen.

Här är ett exempel på alla 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 Hur man formaterar ett tal som valuta i Oracle för mer information och exempel.

SQL-server

SQL Server tillhandahåller FORMAT()-funktionen, som gör det möjligt för oss att formatera siffror och datum. C formatspecifikationen kan användas för att returnera ett tal som en valuta:

SELECT FORMAT(1234, 'C');

Resultat:

$1,234.00

Det finns andra saker du kan göra med formatsträngen, som att ange hur många decimaler som ska returneras.

Funktionen accepterar också ett valfritt tredje argument, som kan användas för att specificera språket som ska användas för formateringen av tal och valuta. Olika lokaler använder olika konventioner för sina nummer och valuta.

Se Hur man formaterar tal som valuta i SQL Server (T-SQL) för mer information och exempel.

PostgreSQL

PostgreSQL har en money datatyp som vanligtvis formateras i den lokala valutan vid utmatning:

SELECT CAST(3145 as money);

Resultat:

$3,145.00

PostgreSQL har också en TO_CHAR() funktion som konverterar värdet till en sträng och formaterar det baserat på formatsträngen vi tillhandahåller. Därför kan vi använda den för att formatera siffror som valuta genom att skicka lämplig formatsträng.

Se Hur man formaterar tal som valuta i PostgreSQL för mer.

MySQL

I MySQL måste vi göra lite mer arbete. MySQL förser oss inte med en formatspecifikation för valutasymbolen, så vi måste tillhandahålla vår egen:

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

Resultat:

$1,234.57

Här använde vi CONCAT() funktion för att sammanfoga valutasymbolen och numret, och vi använde FORMAT() funktion för att formatera numret till vårt önskade format.

Det är möjligt att ange en plats för den numeriska formateringen. Detta bestämmer vilka tecken som används för gruppavgränsare och decimalkomma.

Se Hur man formaterar tal som valuta i MySQL för mer information.

MariaDB

MariaDB är väldigt lik MySQL, och vi kan använda samma metod som vi använde med MySQL.

Här är ett exempel som anger ett språk som ska användas för nummerformatering:

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

Resultat:

€8.790,24

I det här fallet tillhandahöll vi eurosymbolen ( ) och formaterade numret för att använda de numreringskonventioner som används i Tyskland.

Se Formatera ett tal som valuta i MariaDB för mer information.

SQLite

SQLite har en PRINTF() funktion som låter oss formatera ett tal baserat på en formatsträng. Till exempel kan vi använda detta för att formatera talet till ett givet antal decimaler, plus lägga till en valutasymbol.

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

Resultat:

$123.46

Uppdatera :SQLite 3.38.0 (släppt 22 februari 2022) döpte om PRINTF() funktion till FORMAT() . Den ursprungliga PRINTF() namnet behålls som ett alias för bakåtkompatibilitet.

Så exemplet ovan kan ändras till detta:

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

Resultat:

$123.46

Se SQLite-dokumentationen för mer om FORMAT() funktion.


  1. Vad är Map Only-jobb i Hadoop?

  2. Redis administrationspanel

  3. Åtkomst redis lokalt på docker - docker compose

  4. Hur startar man ett mongodb-skal i dockercontainer?