De flesta av de stora RDBMS:erna har funktioner som gör att vi kan formatera tal med kommatecken som antingen gruppavgränsare eller decimalavgränsare.
Vissa RDBMS matar också ut vissa numeriska datatyper med kommatecken på den relevanta platsen.
Nedan finns exempel på formatering av tal med kommatecken i några av de mer populära DBMS:erna.
MySQL
I MySQL kan vi använda FORMAT()
funktion för att formatera siffror med kommatecken:
SELECT FORMAT(123456.789, 2);
Resultat:
123,456.79
Det finns inget behov av att ange var kommatecken ska gå. Funktionen vet var de ska placeras.
Den här funktionen accepterar också ett tredje argument för att ange lokalen. Inte alla språkinställningar använder kommatecken som gruppavgränsare – vissa språkinställningar använder kommatecken som decimaltecken. FORMAT()
funktionen är smart nog att veta vilken konvention som ska användas.
Exempel:
SELECT FORMAT(123456.789, 2, 'de_DE');
Resultat:
123.456,79
Oracle
I Oracle kan vi använda TO_CHAR()
funktion för att formatera ett tal med kommatecken:
SELECT TO_CHAR(12345, 'fm99G999D00')
FROM DUAL;
Resultat:
12,345.00
G
formatelement är en platshållare för gruppseparatorn och D
är för decimalavgränsaren.
I det här fallet matar gruppavgränsaren ett kommatecken och decimaltecknet matar ut en punkt. Det beror på att min nuvarande sessions NLS_TERRITORY
parametern är inställd på Australia
.
Det är sant att vi bara kunde använda ett hårdkodat kommatecken istället för G
formatelement, men det förutsätter att gruppavgränsaren är ett kommatecken. Inte alla språk använder kommatecken som gruppavgränsare.
Se Hur man formaterar ett tal med kommatecken i Oracle för mer information och exempel på hur man formaterar tal med kommatecken i Oracle.
SQL-server
I SQL Server kan vi använda FORMAT()
funktion för att formatera siffror med kommatecken. Denna funktion accepterar numret och en formatsträng:
SELECT
FORMAT(123456.789, 'N') AS "Number",
FORMAT(123456.789, 'P') AS "Percent",
FORMAT(123456.789, 'C') AS "Currency";
Resultat:
+------------+----------------+-------------+ | Number | Percent | Currency | |------------+----------------+-------------| | 123,456.79 | 12,345,678.90% | $123,456.79 | +------------+----------------+-------------+
Funktionen accepterar också ett valfritt "kultur"-argument för att ange lokalen som ska användas för den formaterade utdata.
Du kan också konstruera din egen anpassade formatsträng så att du kan bestämma exakt var varje tusentalsavgränsare och decimalavgränsare går.
Se Hur man formaterar tal med kommatecken i SQL Server för exempel.
PostgreSQL
PostgreSQL har en TO_CHAR()
funktion som fungerar som Oracles funktion med samma namn:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Resultat:
123,456.78
Den här funktionen är lokalmedveten, så den kommer att presentera lämpliga grupp- och decimalavgränsare för språket.
PostgreSQL har också en money
datatyp, som matas ut i ett språkmedvetet format. Se Formatera tal med kommatecken i PostgreSQL för ett exempel.
SQLite
SQLite är lite mer begränsad jämfört med de flesta andra DBMS. Den har dock en printf()
funktion som låter oss formatera tal enligt en formatsträng:
SELECT printf("%,d", 123456789);
Resultat:
123,456,789
Detta fungerar bra med heltal, men reella tal/flyttal kräver lite mer arbete. Se Formatera siffror med komma i SQLite för mer om detta.
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("%,d", 123456789);
Resultat:
123,456,789
MariaDB
I MariaDB kan vi använda FORMAT()
funktion för att formatera ett tal med kommatecken:
SELECT FORMAT(123456.789, 2);
Resultat:
123,456.79
Som med MySQL-funktionen med samma namn, behöver du inte ange var kommatecken ska gå. Funktionen vet var de ska placeras.