Nedenfor er eksempler på tilføjelse af et indledende nul til et tal i SQL ved hjælp af forskellige DBMS'er.
Oracle
Oracle har en TO_CHAR(number)
funktion, der giver os mulighed for at tilføje indledende nuller til et tal. Det returnerer sit resultat som en streng i det angivne format.
SELECT TO_CHAR(7, '000')
FROM DUAL;
Resultat:
007
0
formatelementet er det, der udsender de foranstillede nuller. Hvis vi ikke ville have foranstillede nuller, kunne vi bruge 9
.
Her er en sammenligning mellem 0
og 9
for at demonstrere, hvad jeg mener:
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
er for gruppeseparatoren og D
er for decimaladskilleren. Se denne liste over talformatelementer for en komplet liste.
Oracle har også en LPAD()
funktion, der gør det muligt for os at udfylde et tal med indledende nuller (eller et hvilket som helst andet tegn). Se 2 måder at formatere et tal med førende nuller i Oracle for et eksempel.
PostgreSQL
PostgreSQL har også en TO_CHAR()
funktion, og den fungerer som Oracles funktion af samme navn:
SELECT TO_CHAR(7, '000');
Resultat:
007
Og her er en sammenligning mellem 0
og 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 skabelonmønstre og modifikatorer til numerisk formatering i Postgres for en komplet liste over skabelonmønstre, der kan bruges med denne funktion i PostgreSQL.
Ligesom Oracle har PostgreSQL også en LPAD()
funktion, der gør det muligt for os at udfylde tal med indledende nuller. Se 2 måder at tilføje førende nuller i PostgreSQL for et eksempel.
MySQL
MySQL har en LPAD()
funktion, der giver os mulighed for at udfylde den venstre del af en streng eller et tal med vores valgte tegn eller serie af tegn. Derfor kan vi bruge det til at fylde vores tal med nuller:
SELECT LPAD(7, 3, 0);
Resultat:
007
Heldigvis kan vi videregive tallet som en numerisk type, så det er ikke nødvendigt at konvertere det til en streng først.
Se Sådan tilføjer du førende nuller til et tal i MySQL for mere.
MariaDB
Ligesom MySQL har MariaDB også en LPAD()
funktion, der giver os mulighed for at fylde den venstre del af en streng eller et tal med vores valgte tegn eller serie af tegn:
SELECT LPAD(7, 3, 0);
Resultat:
007
Og ligesom med MySQL kan vi videregive nummeret som en numerisk type, så der er ingen grund til at konvertere det til en streng først.
Se Sådan udfyldes et tal med førende nuller i MariaDB for mere.
SQL-server
SQL Server har en FORMAT()
funktion, der giver os mulighed for at formatere tal ved hjælp af en formatstreng:
SELECT FORMAT(7, '000');
Resultat:
007
Her er det med en gruppeseparator og decimalseparator:
SELECT FORMAT(1234, '0,000.00');
Resultat:
1,234.00
Se Tilføj førende og efterfølgende nuller i SQL Server for mere.
SQLite
SQLite har en PRINTF()
funktion, der kan bruges til at tilføje indledende nuller til et tal:
SELECT PRINTF('%03d', 7);
Resultat:
007
Se Sådan formateres tal med foranstillede nuller i SQLite for en forklaring.
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('%03d', 7);
Resultat:
007