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

SQLLPAD()

En SQL, LPAD() est une fonction couramment utilisée qui remplit la partie gauche d'une chaîne avec un caractère spécifié. La fonction peut être utilisée sur des chaînes et des nombres, bien que selon le SGBD, les nombres doivent être passés sous forme de chaîne avant de pouvoir être remplis.

Les SGBD qui ont un LPAD() incluent MySQL, MariaDB, PostgreSQL et Oracle.

Les SGBD qui ne le font pas avoir un LPAD() incluent SQL Server et SQLite (bien qu'il existe d'autres façons d'appliquer le remplissage gauche dans ces SGBD).

Exemple

Voici un exemple pour montrer comment utiliser LPAD() dans votre code SQL :

SELECT LPAD('Look Left', 20);

Résultat :

+-----------------------+
| LPAD('Look Left', 20) |
+-----------------------+
|            Look Left  |
+-----------------------+

Dans cet exemple, la partie gauche de la chaîne est complétée par un espace (le caractère de remplissage par défaut) et la chaîne résultante fait 20 caractères (parce que j'ai spécifié 20 comme second argument).

Oracle fonctionne de la même manière, mais nous devons utiliser FROM DUAL lors d'une requête comme celle-ci (sans interroger une table réelle) :

SELECT LPAD('Look Left', 20) 
FROM DUAL;

Résultat :

    LPAD('LOOKLEFT',20) 
_______________________ 
           Look Left   

Spécifiez un caractère de remplissage

Le rembourrage ne doit pas nécessairement être un espace. Nous pouvons éventuellement ajouter un troisième argument pour spécifier le caractère (ou les caractères) à utiliser dans le padding.

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

Résultat :

007

Dans ce cas, j'ai complété un nombre avec des zéros. En fait, j'ai passé le nombre sous forme de chaîne dans cet exemple.

Dans certains SGBD (tels que MariaDB et MySQL), nous pouvons transmettre le numéro sous forme de nombre, ainsi que le numéro avec lequel le remplir :

SELECT LPAD(7, 3, 0);

Résultat :

007

Nous pouvons également le faire dans Oracle :

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

Résultat :

007

Mais PostgreSQL a un problème avec ceci :

SELECT LPAD(7, 3, 0);

Résultat :

ERROR:  function lpad(integer, integer, integer) does not exist

SQL Server

SQL Server n'a pas de LPAD() fonction, mais elle a un FORMAT() fonction qui nous permet de compléter les nombres avec des zéros non significatifs :

SELECT FORMAT(7, '000');

Résultat :

007

La façon dont cela fonctionne est que nous transmettons le nombre, suivi d'une chaîne de format. Dans l'exemple ci-dessus, la chaîne de format est 000 . Il s'agit d'une chaîne de format numérique personnalisée qui entraîne le remplissage du numéro d'origine afin que le résultat se compose de trois chiffres. S'il n'y a pas déjà trois chiffres dans le numéro d'origine, il est rempli de zéros.

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

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

Résultat :

....Cat

Il existe également quelques autres équivalents LPAD() dans SQL Server.