Di seguito sono riportati esempi di aggiunta di uno zero iniziale a un numero in SQL, utilizzando vari DBMS.
Oracolo
Oracle ha un TO_CHAR(number)
funzione che ci permette di aggiungere zeri iniziali a un numero. Restituisce il risultato come una stringa nel formato specificato.
SELECT TO_CHAR(7, '000')
FROM DUAL;
Risultato:
007
Il 0
format element è ciò che restituisce gli zeri iniziali. Se non volessimo zeri iniziali, potremmo usare 9
.
Ecco un confronto tra 0
e 9
per dimostrare cosa intendo:
SELECT
TO_CHAR(1234.456, '000G000D00') AS "0",
TO_CHAR(1234.456, '999G999D99') AS "9"
FROM DUAL;
Risultato:
0 9 ______________ ______________ 001,234.46 1,234.46
Il G
è per il separatore di gruppo e il D
è per il separatore decimale. Vedi questo elenco di elementi di formato numerico per un elenco completo.
Oracle ha anche un LPAD()
funzione che ci permette di riempire un numero con zeri iniziali (o qualsiasi altro carattere). Vedi 2 modi per formattare un numero con zeri iniziali in Oracle per un esempio.
PostgreSQL
PostgreSQL ha anche un TO_CHAR()
funzione, e funziona come l'omonima funzione di Oracle:
SELECT TO_CHAR(7, '000');
Risultato:
007
Ed ecco un confronto tra 0
e 9
:
SELECT
TO_CHAR(1234.456, '000G000D00') AS "0",
TO_CHAR(1234.456, '999G999D99') AS "9";
Risultato:
0 | 9 -------------+------------- 001,234.46 | 1,234.46
Vedere Modelli e modificatori di modelli per la formattazione numerica in Postgres per un elenco completo dei modelli di modelli che possono essere utilizzati con questa funzione in PostgreSQL.
Come Oracle, anche PostgreSQL ha un LPAD()
funzione che ci permette di inserire numeri con zeri iniziali. Vedi 2 modi per aggiungere zeri iniziali in PostgreSQL per un esempio.
MySQL
MySQL ha un LPAD()
funzione che ci permette di riempire la parte sinistra di una stringa o di un numero con il nostro carattere o serie di caratteri scelti. Pertanto, possiamo usarlo per riempire il nostro numero con zeri:
SELECT LPAD(7, 3, 0);
Risultato:
007
Fortunatamente, possiamo passare il numero come tipo numerico, quindi non è necessario convertirlo prima in una stringa.
Vedi Come aggiungere zeri iniziali a un numero in MySQL per ulteriori informazioni.
MariaDB
Come MySQL, anche MariaDB ha un LPAD()
funzione che ci permette di riempire la parte sinistra di una stringa o di un numero con il nostro carattere o serie di caratteri scelti:
SELECT LPAD(7, 3, 0);
Risultato:
007
E come con MySQL, possiamo passare il numero come tipo numerico, quindi non è necessario convertirlo prima in una stringa.
Vedi Come riempire un numero con zeri iniziali in MariaDB per ulteriori informazioni.
SQL Server
SQL Server ha un FORMAT()
funzione che ci consente di formattare i numeri utilizzando una stringa di formato:
SELECT FORMAT(7, '000');
Risultato:
007
Eccolo con un separatore di gruppo e un separatore decimale:
SELECT FORMAT(1234, '0,000.00');
Risultato:
1,234.00
Per ulteriori informazioni, vedere Aggiungere zeri iniziali e finali in SQL Server.
SQLite
SQLite ha un PRINTF()
funzione che può essere utilizzata per aggiungere zeri iniziali a un numero:
SELECT PRINTF('%03d', 7);
Risultato:
007
Per una spiegazione, vedere Come formattare i numeri con zeri iniziali in SQLite.
Aggiorna :SQLite 3.38.0 (rilasciato il 22 febbraio 2022) è stato rinominato PRINTF()
funzione su FORMAT()
. Il PRINTF()
originale name viene mantenuto come alias per la compatibilità con le versioni precedenti.
Quindi l'esempio sopra può essere modificato in questo:
SELECT FORMAT('%03d', 7);
Risultato:
007