sql >> Database >  >> NoSQL >> MongoDB

Voorloopnullen toevoegen in SQL

Hieronder staan ​​voorbeelden van het toevoegen van een voorloopnul aan een getal in SQL, met behulp van verschillende DBMS'en.

Oracle

Oracle heeft een TO_CHAR(number) functie waarmee we voorloopnullen aan een getal kunnen toevoegen. Het retourneert het resultaat als een tekenreeks in het opgegeven formaat.

SELECT TO_CHAR(7, '000')
FROM DUAL;

Resultaat:

007

De 0 format element is wat de voorloopnullen uitvoert. Als we geen voorloopnullen willen, kunnen we 9 . gebruiken .

Hier is een vergelijking tussen 0 en 9 om te laten zien wat ik bedoel:

SELECT 
    TO_CHAR(1234.456, '000G000D00') AS "0",
    TO_CHAR(1234.456, '999G999D99') AS "9"
FROM DUAL;

Resultaat:

             0              9 
______________ ______________ 
 001,234.46       1,234.46    

De G is voor het groepsscheidingsteken en de D is voor het decimaalteken. Bekijk deze lijst met elementen van getalnotatie voor een volledige lijst.

Oracle heeft ook een LPAD() functie waarmee we een getal met voorloopnullen (of een ander teken) kunnen invullen. Zie 2 manieren om een ​​getal op te maken met voorloopnullen in Oracle voor een voorbeeld.

PostgreSQL

PostgreSQL heeft ook een TO_CHAR() functie, en het werkt als de gelijknamige functie van Oracle:

SELECT TO_CHAR(7, '000');

Resultaat:

007

En hier is een vergelijking tussen 0 en 9 :

SELECT 
    TO_CHAR(1234.456, '000G000D00') AS "0",
    TO_CHAR(1234.456, '999G999D99') AS "9";

Resultaat:

      0      |      9      
-------------+-------------
  001,234.46 |    1,234.46

Zie Sjabloonpatronen en -modificaties voor numerieke opmaak in Postgres voor een volledige lijst met sjabloonpatronen die met deze functie in PostgreSQL kunnen worden gebruikt.

Net als Oracle heeft PostgreSQL ook een LPAD() functie waarmee we getallen met voorloopnullen kunnen invullen. Zie 2 manieren om voorloopnullen toe te voegen in PostgreSQL voor een voorbeeld.

MySQL

MySQL heeft een LPAD() functie waarmee we het linkerdeel van een tekenreeks of nummer kunnen vullen met het door ons gekozen teken of de reeks tekens. Daarom kunnen we het gebruiken om ons getal met nullen op te vullen:

SELECT LPAD(7, 3, 0);

Resultaat:

007

Gelukkig kunnen we het getal als een numeriek type doorgeven, dus het is niet nodig om het eerst naar een tekenreeks te converteren.

Zie Voorloopnullen toevoegen aan een getal in MySQL voor meer informatie.

MariaDB

Net als MySQL heeft MariaDB ook een LPAD() functie waarmee we het linkerdeel van een tekenreeks of nummer kunnen vullen met het door ons gekozen teken of de reeks tekens:

SELECT LPAD(7, 3, 0);

Resultaat:

007

En net als bij MySQL kunnen we het getal doorgeven als een numeriek type, dus het is niet nodig om het eerst naar een tekenreeks te converteren.

Zie Hoe u een getal opvult met voorloopnullen in MariaDB voor meer informatie.

SQL-server

SQL Server heeft een FORMAT() functie waarmee we getallen kunnen opmaken met behulp van een opmaakreeks:

SELECT FORMAT(7, '000');

Resultaat:

007

Hier is het met een groepsscheidingsteken en decimaalteken:

SELECT FORMAT(1234, '0,000.00');

Resultaat:

1,234.00

Zie Voorloop- en volgnullen toevoegen in SQL Server voor meer informatie.

SQLite

SQLite heeft een PRINTF() functie die kan worden gebruikt om voorloopnullen aan een getal toe te voegen:

SELECT PRINTF('%03d', 7);

Resultaat:

007

Zie Getallen opmaken met voorloopnullen in SQLite voor een uitleg.

Bijwerken :SQLite 3.38.0 (uitgebracht op 22 februari 2022) hernoemde de PRINTF() functie naar FORMAT() . De originele PRINTF() naam wordt behouden als een alias voor achterwaartse compatibiliteit.

Dus het bovenstaande voorbeeld kan hier in veranderd worden:

SELECT FORMAT('%03d', 7);

Resultaat:

007

  1. Meertalige gegevensmodellering op MongoDB

  2. De importmodi van mongoimport

  3. Hoe maak je een back-up en herstel je ClusterControl

  4. Is het mogelijk om de velden in de volgorde van projectie te krijgen in Aggregation Frameworks mongo