sql >> Databasteknik >  >> NoSQL >> MongoDB

Lägg till ledande nollor i SQL

Nedan finns exempel på att lägga till en inledande nolla till ett tal i SQL, med hjälp av olika DBMS.

Oracle

Oracle har en TO_CHAR(number) funktion som låter oss lägga till inledande nollor till ett tal. Den returnerar sitt resultat som en sträng i det angivna formatet.

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

Resultat:

007

0 formatelementet är det som matar ut de inledande nollorna. Om vi ​​inte ville ha inledande nollor kunde vi använda 9 .

Här är en jämförelse mellan 0 och 9 för att visa vad jag menar:

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

Resultat:

             0              9 
______________ ______________ 
 001,234.46       1,234.46    

G är för gruppseparatorn och D är för decimalavgränsaren. Se den här listan med talformatelement för en fullständig lista.

Oracle har också en LPAD() funktion som gör att vi kan fylla ett tal med inledande nollor (eller något annat tecken). Se 2 sätt att formatera ett tal med ledande nollor i Oracle för ett exempel.

PostgreSQL

PostgreSQL har också en TO_CHAR() funktion, och den fungerar som Oracles funktion med samma namn:

SELECT TO_CHAR(7, '000');

Resultat:

007

Och här är en jämförelse mellan 0 och 9 :

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

Resultat:

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

Se Mallmönster och modifierare för numerisk formatering i Postgres för en fullständig lista över mallmönster som kan användas med den här funktionen i PostgreSQL.

Liksom Oracle har PostgreSQL också en LPAD() funktion som gör att vi kan fylla ut tal med inledande nollor. Se 2 sätt att lägga till ledande nollor i PostgreSQL för ett exempel.

MySQL

MySQL har en LPAD() funktion som låter oss fylla den vänstra delen av en sträng eller ett nummer med vårt valda tecken eller teckenserie. Därför kan vi använda den för att fylla vårt nummer med nollor:

SELECT LPAD(7, 3, 0);

Resultat:

007

Lyckligtvis kan vi skicka numret som en numerisk typ, så det finns ingen anledning att konvertera det till en sträng först.

Se Hur man lägger till ledande nollor till ett nummer i MySQL för mer.

MariaDB

Precis som MySQL har MariaDB också en LPAD() funktion som låter oss fylla den vänstra delen av en sträng eller ett nummer med vårt valda tecken eller teckenserie:

SELECT LPAD(7, 3, 0);

Resultat:

007

Och precis som med MySQL kan vi skicka numret som en numerisk typ, så det finns ingen anledning att konvertera det till en sträng först.

Se Hur man fyller ett nummer med ledande nollor i MariaDB för mer.

SQL-server

SQL Server har en FORMAT() funktion som låter oss formatera tal med en formatsträng:

SELECT FORMAT(7, '000');

Resultat:

007

Här är den med gruppavgränsare och decimalavgränsare:

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

Resultat:

1,234.00

Se Lägg till ledande och efterföljande nollor i SQL Server för mer.

SQLite

SQLite har en PRINTF() funktion som kan användas för att lägga till inledande nollor till ett tal:

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

Resultat:

007

Se Hur man formaterar tal med inledande nollor i SQLite för en förklaring.

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('%03d', 7);

Resultat:

007

  1. Hur växlar man ett booleskt fält i ett dokument med atomär drift?

  2. Uppdatering av inbäddad dokumentegenskap i Mongodb

  3. Vad är MapReduce Key Value Pair i Hadoop?

  4. Hur skapar du db (key_space) i redis