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

Sådan formateres tal i SQL

De fleste større RDBMS'er giver os måder at formatere tal ved hjælp af SQL. Nogle giver kun grundlæggende formateringsmuligheder, mens andre er mere avancerede.

Nedenfor er eksempler på formatering af et tal i nogle af de mere populære RDBMS'er.

MySQL

I MySQL kan vi bruge FORMAT() funktion til at formatere et tal til et bestemt format. Denne funktion accepterer tre parametre; tallet, antallet af decimaler og en valgfri lokalitet:

SELECT FORMAT(123456.789, 2);

Resultat:

123,456.79

Som nævnt kan du også sende et tredje argument for at angive den lokalitet, der skal bruges til formateringsmønsteret. Se Sådan formateres tal i MySQL for et eksempel.

For at formatere tal som valuta, se Sådan formateres tal som valuta i MySQL.

Oracle

Oracle Database giver os en række muligheder, når det kommer til formatering af tal.

Især TO_CHAR(number) funktion giver os mulighed for at formatere et tal baseret på vores egen brugerdefinerede formatmodel.

Eksempel:

SELECT 
    TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;

Resultat:

$12,345.00

Det første argument er tallet, der skal formateres, og det andet argument er formatmodellen. Formatmodellen består af et eller flere formatelementer, som hver repræsenterer et forskelligt element i det formaterede output.

I ovenstående eksempel bruger vi 9 tegn til at repræsentere hvert ciffer og 0 tegn for at udskrive cifferet eller nullet (afhængigt af om der findes et ciffer i den position eller ej). Vi bruger også G for en lokalitetsbevidst gruppeseparator og D for en lokalitetsbevidst decimalseparator. fm element undertrykker enhver førende eller efterfølgende polstring, der kan anvendes på resultatet.

Her er en komplet liste over formatelementer, som du kan bruge til din formatmodel, når du formaterer tal.

Der er andre måder at formatere tal på i Oracle. For eksempel LPAD() funktionen kan bruges til at konvertere tal til en streng og formatere dem nøjagtigt, som du kan lide på farten. Funktioner som CAST() kan også have en indvirkning på, hvordan et tal formateres, afhængigt af den datatype, det bliver castet som.

Se Sådan formateres tal i Oracle for flere detaljer og eksempler.

PostgreSQL

Ligesom Oracle har PostgreSQL også en TO_CHAR() funktion, og det fungerer stort set på samme måde:

SELECT TO_CHAR(923, 'fm000G000th');

Resultat:

000,923rd

Her brugte jeg 0 formatelement for at udlæse indledende nuller, selv når det oprindelige tal ikke havde nogen cifre på det sted. I dette tilfælde brugte jeg th formatelement for at konvertere tallet til dets orden. Jeg brugte også G for en lokalitetsbevidst gruppeseparator.

Her er en liste over skabelonmønstre, som formatstrengen kan bestå af ved formatering af tal, såvel som formatmodifikatorerne.

En anden måde at formatere et tal på i PostgreSQL er at konvertere det til money datatype. Numre gemt som money type udskrives i et format, der er lokaliseret, med det relevante valutasymbol, gruppeseparator, decimalseparator osv.:

SELECT CAST(10000 as money);

Resultat:

$10,000.00

Se Sådan formateres tal i PostgreSQL for flere eksempler på formatering af tal i PostgreSQL.

SQL-server

SQL Server har FORMAT() funktion, der fungerer meget som Oracle og PostgreSQL's TO_CHAR() funktion, idet den giver dig mulighed for at formatere tal baseret på en formatstreng:

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 |
+------------+----------------+-------------+

Dette eksempel viser tre standardformatspecifikationer - som hver udskriver tallet i et bestemt format.

Vi kan også bruge vores egne brugerdefinerede formatspecifikationer, som giver os mulighed for at lave vores eget format, hvis standardformatet ikke er det, vi ønsker.

Du kan også gøre ting som at formatere tal i deres hexadecimale ækvivalent eller bruge eksponentiel notation osv.

Og du kan sende et valgfrit tredje argument for at angive den lokalitet, som nummeret skal formateres for (det formaterer tallet ved at bruge konventionerne for det pågældende sted).

Se Sådan formateres tal i SQL Server for flere eksempler.

MariaDB

Ligesom MySQL har MariaDB et FORMAT() funktion, som giver grundlæggende talformatering.

Her er et eksempel på brug af denne funktion til at formatere et tal ved hjælp af forskellige lokaliteter:

SELECT 
    FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India",
    FORMAT(123456.789, 2, 'de_DE') AS "German, Germany",
    FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";

Resultat:

+--------------+-----------------+--------------------+
| Tamil, India | German, Germany | Chinese, Hong Kong |
+--------------+-----------------+--------------------+
| 1,23,456.79  | 123.456,79      | 123,456.79         |
+--------------+-----------------+--------------------+

Se Sådan formateres tal i MariaDB for flere eksempler.

SQLite

SQLite er mere begrænset end de andre DBMS'er, når det kommer til formatering af tal. Der er dog måder at få noget grundlæggende talformatering på:

SELECT PRINTF("%,d", 123456789);

Resultat:

123,456,789

PRINTF() funktion kan udlæse gruppeseparatorer for heltal, men ikke for reelle/flydende deal. For at formatere reelle/flydende tal skal du gøre lidt mere arbejde. Se Formater tal med komma i SQLite for et eksempel på, hvad jeg mener.

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("%,d", 123456789);

Resultat:

123,456,789

  1. Mongodb 3.6.0-rc3 array-filtre virker ikke?

  2. Brug af StackExchange.Redis i en ASP.NET Core Controller

  3. Hvad betyder *((char*)-1) ='x' kode?

  4. Kom godt i gang med MongoDB User Management