In SQL, LPAD()
è una funzione comunemente usata che riempie la parte sinistra di una stringa con un carattere specificato. La funzione può essere utilizzata su stringhe e numeri, anche se, a seconda del DBMS, potrebbe essere necessario passare i numeri come stringa prima di poter essere riempiti.
DBMS che hanno un LPAD()
funzioni includono MySQL, MariaDB, PostgreSQL e Oracle.
DBMS che non avere un LPAD()
la funzione include SQL Server e SQLite (sebbene ci siano altri modi per applicare il riempimento sinistro in questi DBMS).
Esempio
Ecco un esempio per dimostrare come utilizzare LPAD()
nel tuo codice SQL:
SELECT LPAD('Look Left', 20);
Risultato:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
In questo esempio, la parte sinistra della stringa è riempita con uno spazio (il carattere di riempimento predefinito) e la stringa risultante è lunga 20 caratteri (perché ho specificato 20
come secondo argomento).
Oracle funziona allo stesso modo, ma dobbiamo usare FROM DUAL
quando si esegue una query come questa (senza interrogare una tabella reale):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Risultato:
LPAD('LOOKLEFT',20) _______________________ Look Left
Specifica un carattere di riempimento
L'imbottitura non deve necessariamente essere uno spazio. Possiamo opzionalmente aggiungere un terzo argomento per specificare il carattere (oi caratteri) da utilizzare nel riempimento.
SELECT LPAD('7', 3, '0');
Risultato:
007
In questo caso ho riempito un numero con zeri. In realtà, in questo esempio ho passato il numero come stringa.
In alcuni DBMS (come MariaDB e MySQL) possiamo passare il numero come numero, così come il numero con cui riempirlo:
SELECT LPAD(7, 3, 0);
Risultato:
007
Possiamo farlo anche in Oracle:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Risultato:
007
Ma PostgreSQL ha un problema con questo:
SELECT LPAD(7, 3, 0);
Risultato:
ERROR: function lpad(integer, integer, integer) does not exist
SQL Server
SQL Server non ha un LPAD()
funzione, ma ha un FORMAT()
funzione che ci permette di riempire i numeri con zeri iniziali:
SELECT FORMAT(7, '000');
Risultato:
007
Il modo in cui funziona è passare il numero, seguito da una stringa di formato. Nell'esempio sopra, la stringa di formato è 000
. Questa è una stringa di formato numerico personalizzata che determina il riempimento del numero originale in modo che il risultato sia composto da tre cifre. Se non ci sono già tre cifre nel numero originale, viene riempito con zeri.
Per le stringhe del pad sinistro in SQL Server, possiamo fare qualcosa del genere:
SELECT RIGHT('.......' + 'Cat', 7);
Risultato:
....Cat
Esistono anche un paio di altri equivalenti LPAD() in SQL Server.