Alcuni RDBMS forniscono un LPAD()
e RPAD()
funzione che ci consente di premere a sinistra oa destra una stringa. Alcune funzioni ci consentono anche di aggiungere numeri di zeri iniziali o finali.
Di seguito sono riportati esempi di applicazione del riempimento SQL in alcuni dei più diffusi RDBMS.
Oracolo
Oracle ci fornisce LPAD()
e RPAD()
specifico per riempire la parte sinistra o destra di una stringa:
SELECT LPAD('Cat', 20)
FROM DUAL;
Risultato:
LPAD('CAT',20) _______________________ Cat
In questo caso ho usato LPAD()
per applicare il riempimento sinistro e la stringa risultante è di 20 caratteri, perché è quello che ho usato per il secondo argomento.
Il risultato è riempito da uno spazio, perché questo è il carattere predefinito utilizzato per il riempimento. Se non specifichi con quale carattere riempire la stringa, viene utilizzato uno spazio.
Puoi aggiungere un terzo carattere per specificare quale carattere utilizzare per il riempimento:
SELECT LPAD('7', 3, '0')
FROM DUAL;
Risultato:
LPAD('7',3,'0') __________________ 007
In questo caso ho riempito un numero con zeri (anche se il risultato è una stringa).
Oracle ha anche un TO_CHAR(number)
funzione che può essere utilizzata per aggiungere zeri iniziali a un numero:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Risultato:
007
Il 0
L'elemento format rappresenta ogni cifra nel numero originale e zero se non esiste alcuna cifra in quella posizione nel numero originale.
PostgreSQL
PostgreSQL ha anche il suo LPAD()
e RPAD()
funzioni:
SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
Risultato:
Left Padding | Right Padding | Both --------------+---------------+------- 007 | 700 | 00700
E ha anche il suo TO_CHAR()
funzione che funziona in modo molto simile all'omonima funzione di Oracle:
SELECT TO_CHAR(7, 'fm000');
Risultato:
007
MariaDB
MariaDB ha il suo LPAD()
e RPAD()
funzioni:
SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
Risultato:
+--------------+---------------+-------+ | Left Padding | Right Padding | Both | +--------------+---------------+-------+ | 007 | 700 | 00700 | +--------------+---------------+-------+
E mentre MariaDB ha il suo TO_CHAR()
funzione, non funziona sui numeri (è limitato ai valori datetime).
MySQL
MySQL ha anche il suo LPAD()
e RPAD()
funzioni.
Ecco un esempio di utilizzo di LPAD()
contro una colonna del database:
SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;
Risultato:
+---------+----------------------+ | Genre | LPAD(Genre, 10, '.') | +---------+----------------------+ | Rock | ......Rock | | Jazz | ......Jazz | | Country | ...Country | | Pop | .......Pop | | Blues | .....Blues | | Hip Hop | ...Hip Hop | | Rap | .......Rap | | Punk | ......Punk | +---------+----------------------+
SQL Server
SQL Server è un po' un'anomalia in quanto non ha un LPAD()
o RPAD()
funzione.
Tuttavia, SQL Server ha un FORMAT()
funzione che ci consente di comporre facilmente i numeri con zeri iniziali:
SELECT FORMAT(7, '000');
Risultato:
007
Il secondo argomento è una stringa di formato numerico personalizzata che determina quanti caratteri avrà la stringa risultante. Il fatto che ho usato zeri significa che il risultato avrà zeri iniziali, se necessario.
Per riempire le stringhe in SQL Server, possiamo fare qualcosa del genere:
SELECT RIGHT('.......' + 'Cat', 7);
Risultato:
....Cat
Esistono varie altre tecniche che possiamo utilizzare per applicare il riempimento in SQL Server.