Il arrive que dans une base de données, un champ possède un caractère en trop en début ou en fin d’une colonne. Il est alors pratique d’exclure ou de supprimer ce caractère en trop. Cet article présente plusieurs requêtes SQL pour exclure le premier ou le dernier caractère contenu dans une colonne d’une base de données.
Exclure le premier caractère
Pour exclure le premier caractère il convient d’utiliser la fonction SUBSTR() qui permet d’extraire une partie d’une chaine:
SELECT SUBSTR(nom_colonne, 2) AS colonne_sans_first FROM table WHERE condition
A savoir : la fonction est appelée différemment selon le système de gestion de base de données :
- MySQL : SUBSTR(), SUBSTRING()
- PostgreSQL : SUBSTR(), SUBSTRING()
- Oracle : SUBSTR()
- SQL Server : SUBSTRING()
Supprimer le premier caractère
Il est aussi possible de supprimer une bonne fois pour toute le premier caractère en mettant à jour avec UPDATE. Pour cela, il est possible d’utiliser la requête SQL suivante :
UPDATE table SET nom_colonne = SUBSTR(nom_colonne, 2) WHERE condition
Cette requête utilise encore une fois la fonction SUBSTR() pour extraire toute la chaîne excepté le premier caractère.
A savoir : il est possible de supprimer plus d’un caractère en début de chaîne en modifiant la valeur 2.
Exclure le dernier caractère
Il est également possible de supprimer le dernière caractère d’une chaîne dans le résultat d’une requête SQL. C’est un peu compliqué, mais la requête ressemble à ceci:
SELECT nom_colonne, SUBSTR(nom_colonne, 1, CHAR_LENGTH(nom_colonne) - 1) AS colonne_sans_last FROM table WHERE condition
En détaillant, on remarque que ce n’est pas si dur que cela. Il suffit de tronquer en utilisant SUBSTRING de 1 jusqu’à la taille maximum moins 1 caractère.
A savoir : la fonction CHAR_LENGTH() peut s’appeler de plusieurs façon différente selon le système de gestion de base de données:
- MySQL : CHAR_LENGTH ou CHARACTER_LENGTH()
- PostgreSQL : CHAR_LENGTH ou CHARACTER_LENGTH()
- Oracle : CHAR_LENGTH ou CHARACTER_LENGTH()
- SQL Server : LEN()
Supprimer le dernier caractère
Pour mettre à jour une table en supprimant le dernier caractère d’une chaîne, il suffit d’utiliser la même astuce que précédemment mais dans une requête UPDATE:
UPDATE table SET nom_colonne = SUBSTR(nom_colonne, 1, CHAR_LENGTH(nom_colonne) - 1) WHERE condition
Mot de la fin
Ces exemples de requête peuvent être utiles lorsqu’on se rend compte par exemple qu’un champ est enregistré entre parenthèses et que ces parenthèses peuvent être supprimées.
Astuce : Il faut toutefois veiller à ce que la colonne qui est mise à jour possède au minimum 1 caractère. Dès lors, il faut penser à utiliser la condition WHERE pour exclure les enregistrements dans lequel la chaîne est vide avec un condition qui ressemble à ceci:
WHERE nom_colonne <> ''
bonjour,
dans un select je cherche à retirer les 0 qui se trouve au debut de ma chaine de caracteres, exemple 0000123456 je ne veux afficher que 123456 dans le resultat du select. savez vous comment je peux faire ?
par avance merci.
Nicolas
bonjour,
Tu peux commencer par effacer les zéros avec SUBSTR() et ensuite faire un select classique.
Sinon il faut transformer la chaîne de caractères en nombre…
1ère solution (Oracle) :
SELECT TO_NUMBER(‘0000123456’)
FROM DUAL
2ème solution (Oracle, SQL Server) :
SELECT CAST(‘0000123456’ AS NUMBER)
FROM DUAL