MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

SQL LPAD()

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.