MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Rembourrage en SQL

Certains SGBDR fournissent un LPAD() et RPAD() fonction qui nous permet de remplir à gauche ou à droite une chaîne. Certaines fonctions nous permettent également d'ajouter des zéros de début ou de fin.

Vous trouverez ci-dessous des exemples d'application de remplissage SQL dans certains des SGBDR les plus populaires.

Oracle

Oracle nous fournit LPAD() et RPAD() spécifiquement pour remplir la partie gauche ou droite d'une chaîne :

SELECT LPAD('Cat', 20)
FROM DUAL;

Résultat :

         LPAD('CAT',20) 
_______________________ 
                 Cat    

Dans ce cas, j'ai utilisé LPAD() pour appliquer un remplissage gauche, et la chaîne résultante est de 20 caractères, car c'est ce que j'ai utilisé pour le deuxième argument.

Le résultat est complété par un espace, car c'est le caractère par défaut utilisé pour le remplissage. Si vous ne spécifiez pas le caractère avec lequel remplir la chaîne, un espace est utilisé.

Vous pouvez ajouter un troisième caractère pour spécifier quel caractère utiliser pour le remplissage :

SELECT LPAD('7', 3, '0')
FROM DUAL;

Résultat :

   LPAD('7',3,'0') 
__________________ 
007               

Dans ce cas, j'ai complété un nombre avec des zéros (bien que le résultat soit une chaîne).

Oracle a aussi un TO_CHAR(number) fonction qui peut être utilisée pour ajouter des zéros non significatifs à un nombre :

SELECT TO_CHAR(7, 'fm000')
FROM DUAL;

Résultat :

007

Le 0 L'élément de format représente chaque chiffre du nombre d'origine, et zéro s'il n'existe aucun chiffre à cette position dans le nombre d'origine.

PostgreSQL

PostgreSQL a aussi son propre LPAD() et RPAD() fonctions :

SELECT 
    LPAD('7', 3, '0') AS "Left Padding",
    RPAD('7', 3, '0') AS "Right Padding",
    LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";

Résultat :

 Left Padding | Right Padding | Both  
--------------+---------------+-------
 007          | 700           | 00700

Et il a aussi son propre TO_CHAR() fonction qui fonctionne un peu comme la fonction d'Oracle du même nom :

SELECT TO_CHAR(7, 'fm000');

Résultat :

007

MariaDB

MariaDB a son propre LPAD() et RPAD() fonctions :

SELECT 
    LPAD('7', 3, '0') AS "Left Padding",
    RPAD('7', 3, '0') AS "Right Padding",
    LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";

Résultat :

+--------------+---------------+-------+
| Left Padding | Right Padding | Both  |
+--------------+---------------+-------+
| 007          | 700           | 00700 |
+--------------+---------------+-------+

Et tandis que MariaDB a son propre TO_CHAR() fonction, cela ne fonctionne pas sur les nombres (il est limité aux valeurs datetime).

MySQL

MySQL a aussi son propre LPAD() et RPAD() fonctions.

Voici un exemple d'utilisation de LPAD() par rapport à une colonne de base de données :

SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;

Résultat :

+---------+----------------------+
| 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 est un peu une anomalie en ce sens qu'il n'a pas de LPAD() ou RPAD() fonction.

Cependant, SQL Server a un FORMAT() fonction qui nous permet de compléter facilement les nombres avec des zéros non significatifs :

SELECT FORMAT(7, '000');

Résultat :

007

Le deuxième argument est une chaîne de format numérique personnalisée qui détermine le nombre de caractères de la chaîne résultante. Le fait que j'ai utilisé des zéros signifie que le résultat aura des zéros non significatifs si nécessaire.

Pour remplir des chaînes dans SQL Server, nous pouvons faire quelque chose comme ceci :

SELECT RIGHT('.......' + 'Cat', 7);

Résultat :

....Cat

Il existe diverses autres techniques que nous pouvons utiliser pour appliquer le rembourrage dans SQL Server.