SQL LPAD()

Dans le langage SQL, la fonction LPAD() permet de compléter une chaîne de caractère jusqu’à ce qu’elle atteigne la taille souhaitée, en ajoutant des caractères au début de cette chaîne.

La fonction LPAD() s’utilise avec 2 ou 3 paramètres. Le premier paramètre correspond à la chaîne de caractères d’entrée, le second paramètre définie la longueur souhaitée. Finalement, le 3ème paramètre correspond à la chaîne de complétion. Ce dernier paramètre est facultatif sur certains Systèmes de Gestion de Base de Données (SGBD) tel que Oracle ou PostgreSQL (mais pas pour MySQL).

Important : si la longueur souhaitée est plus petite que la taille actuelle de la chaîne de caractère, alors la chaîne retournée sera tronquée pour faire la taille exacte qui est souhaitée.

Syntaxe

Cette fonction SQL peut s’utiliser simplement dans des requêtes SQL, comme le montre les requêtes suivantes :

SELECT LPAD('azerty', 4, 'x');  -- retourne 'azer'
SELECT LPAD('azerty', 6, 'x');  -- retourne 'azerty'
SELECT LPAD('azerty', 10, 'x'); -- retourne 'xxxxazerty'
SELECT LPAD('azerty', 10);      -- retourne '    azerty' (fonctionne avec Oracle ou PostgreSQL, mais pas avec MySQL)
SELECT LPAD('azerty', 9, 'xy'); -- retourne 'xyxazerty'
SELECT LPAD('123', 6, '0');     -- retourne '000123'

A noter : par défaut si le troisième paramètre n’est pas complété la chaîne de complétion sera un espace vide.

Exemple

Imaginons un système informatique ayant une base de données de produits. Une table “produit” pourrait contenir le prix des produits sous un format sans virgules, tel que “29.90€” pourrait s’écrire “2990” dans la base de données. Cet exemple est purement fictif et va permettre d’illustrer l’intérêt de la fonction LPAD().

Table “produit” :

idnomprix_avec_format
1Télévision45500
2Téléphone2990
3Table12200
4Fauteuil3599

Certains vieux système informatique demande de formater les résultats sous un format assez précis. Imaginons que l’ont souhaite afficher le prix sous 8 caractères, en complétant par des zéros au début du prix. Pour afficher le prix sous un tel format il serait possible d’utiliser la requête SQL suivante :

SELECT id, nom, prix_avec_format, LPAD(prix_avec_format, 8, '0')
FROM produit

Résultat :

idnomprix_avec_formatLPAD(prix_avec_format, 8, '0')
1Télévision4550000045500
2Téléphone299000002990
3Table1220000012200
4Fauteuil359900003599

Ce résultat démontre bien que le prix peut être formaté de la façon désirée grâce à la fonction LPAD(). Il n’est pas dur pour un programme informatique de supprimer les zéros initiaux pour retrouver le prix sous un format plus facile à exploiter.

Partager