Logo et slogan PostgreSQL

SQL – Nettoyer un champs des retours à la ligne

SQL


Quelque fois vous avez des applications avec une IHM (Interface Homme Machine) qui ne respecte pas forcément les types de champs de vos bases de données, ou du moins qui permettent l’insertion de données erronées. Cela peut être gênant lorsque vous réutilisez ces données. J’ai eu le cas, il y a peu, de champs varchar, dans une base de données PostgreSQL, contenant des retours à la ligne à la fin du champs. Cela était possible, car les utilisateurs faisaient du copier / coller de données provenant de sources diverses sur l’IHM. La première chose à faire fût de modifier l’IHM afin de nettoyage ces champs des caractères non-désirés. La seconde et celle dont je vais vous parler ici a été le nettoyage de l’ensemble des données de la base de données.

Un champs de type varchar, utilisé en tant que conteneur de données textuelles, peut contenir des caractères non-visibles tels que les retours chariot \r, nouvelles lignes \n, espaces et les tabulations \t. Cependant dans mon cas précis, ces caractères sont indésirables.

La commande SQL pour supprimer mes caractères indésirables du champs myfield de la table mytable est la suivante :

update mytable set myfield = trim(both E' \t\r\n' from myfield);

La commande trim supprime les tabulations, espaces, retours à la ligne et nouvelles lignes présents au début et à la fin de chaque valeur du champ myfield. Elle est disponible sous la plupart des moteurs de base de données SQL, notamment MySQL et PostgreSQL.

Pour supprimer uniquement au début de champs, remplacez both par leading. Pour supprimer à la fin de champs, remplaces le both par trailing.

Cette commande permet de supprimer tous les caractères que l’on ne désire pas dans le champs tant qu’ils sont en début ou en fin de champs. Exemple :

postgres=# select trim(both 'abc' from 'aabctatabcbca');
 btrim 
-------
 tat
(1 ligne)

Dans cette commande, nous demandons de supprimer les lettres a, b ou c si elles se trouve en début ou en fin de chaîne. Je n’ai pas désigné la chaîne tel que E'abc' car le E spécifie la présence de caractères spéciaux.

Attention : cette commande peut endommager les données de manière irréversible. Dans l’exemple précédant, la chaîne correct était tata hors le dernier a a été supprimé.

En passant, en Python la commande à utiliser pour nettoyer ses entrées des caractères invisibles est la fonction str().strip() .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.