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

Riempimento in SQL

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.