Retour à la liste des articles Articles
5 minutes de lecture

Comment supprimer les caractères indésirables en SQL

Les caractères indésirables dans les données texte peuvent être un peu pénibles, mais il existe un moyen facile de les corriger. Faites défiler la page pour apprendre comment supprimer les caractères indésirables en SQL de la manière la plus simple qui soit !

Parfois, nous trouvons des caractères indésirables dans nos chaînes de données parce que nos requêtes SQL ne fonctionnent pas comme prévu. De plus, ces caractères supplémentaires peuvent parfois être invisibles, ce qui complique vraiment les choses. Dans cet article, nous allons examiner quelques fonctions SQL liées aux chaînes de caractères qui peuvent traiter les caractères indésirables, qu'ils soient visibles ou non !

L'importance de la normalisation des chaînes de caractères dans votre base de données

Lorsque nous travaillons avec des données alimentées ou chargées en texte libre, la qualité des données est souvent médiocre. Les caractères indésirables peuvent sérieusement nuire à la qualité de vos données et rendre plus difficile l'analyse des informations que vous avez recueillies. Il est donc important de comprendre comment utiliser les fonctions de chaîne SQL pour résoudre ces problèmes courants afin de pouvoir nettoyer votre base de données.

Comment supprimer les caractères superflus en SQL ? Commençons par explorer les fonctions SQL trim et length.

Résolution des problèmes avec les fonctions de chaîne SQL

Pour expliquer comment résoudre les problèmes liés aux caractères indésirables, nous allons travailler avec une simple base de données de soins de santé. Imaginons un médecin qui stocke toutes les données de ses patients dans une seule table. Cette table contient le nom complet du patient, la date de la visite, le diagnostic du médecin, le traitement proposé et les médicaments prescrits.

Chaque fois qu'un patient se rend à son cabinet, le médecin crée un nouvel enregistrement. Il saisit manuellement ses notes dans la base de données, si bien que la qualité des données est parfois médiocre.

Full_Name date diagnostic treatment Drugs_in_receipt
John Smith ’03/04/2016′ Flu rest “aspirin, paracetamol”
Mary Deep ’10/11/2016′ Food Poisoning Rest & diet “penicillin,paracetamol”
Agnes Jason ’03/12/2016′ flu rest “aspirin, paracetamol”
Johnny SMITH ’15/03/2017′ Food Poisoned Rest & diet “penicillin,paracetamol”
AGNES Jason ’19/072017′ angina Rest and don’t speak “amoxicillin”
Peter Duckerz ’10/10/2017′ Flu Rest “paracetamol”

Fonctions SQL pour la suppression des caractères invisibles et indésirables

Dans certains cas, une chaîne de texte peut contenir des caractères indésirables, tels que des espaces vides, des guillemets, des virgules ou même des séparateurs "|". Ceux-ci peuvent se trouver d'un côté ou de l'autre ou des deux côtés de la chaîne. Nous pouvons supprimer ces caractères indésirables en utilisant les fonctions SQL TRIM, SQL LTRIM et SQL RTRIM. Elles sont très similaires et sont expliquées dans le tableau suivant :

Function Parameters Behavior
LTRIM A string and a specific character Removes the specified character from the left side only
RTRIM A string and a specific character Removes the specified character from the right side only
TRIM A string and a specific character Removes the specified character from both sides

Essayons ces fonctions, en commençant par LENGTH. Comment supprimer les caractères indésirables en SQL en les utilisant ?

Si vous examinez le tableau d'origine, vous remarquerez que certaines entrées de la colonne diagnostic comportent des caractères indésirables tels que des espaces inutiles au début. Mais il y a aussi quelques espaces cachés après chaque entrée. Pour résoudre ce problème, nous allons commencer par compter le nombre de caractères dans les chaînes de diagnostic à l'aide de la fonction LENGTH. Comme les espaces vides ne sont pas des caractères visibles, nous utilisons des crochets pour nous montrer où se trouvent les espaces supplémentaires (s'il y en a).

Voyons comment la fonction SQL LENGTH fonctionne dans cette requête :

SELECT 	diagnostic as real_diagnostic,
	 	length(diagnostic) as field_length,
		'<' || diagnostic || '>' as delimited_diagnostic
FROM patient_data 
real_diagnostic field_length delimited_diagnostic
Flu 3 <Flu>
Food Poisoning 14 <Food Poisoning>
flu 4 < flu>
Food Poisoned 15 < Food Poisoned>
angina 6 <angina>
Flu 4 < Flu>

Nous pouvons voir que plusieurs enregistrements ont des caractères indésirables, c'est-à-dire des espaces inutiles. Pour " flu ", la longueur est de 4 au lieu de 3, et le champ délimité présente un blanc au début. Une requête appropriée permettra de résoudre ce problème et de supprimer les espaces inutiles. Allons-y et faisons-le maintenant !

SELECT	diagnostic as real_diagnostic, 	
		trim(diagnostic) as trimmed_diagnostic
FROM patient_data 
real_diagnostic trimmed_diagnostic
Flu Flu
Food Poisoning Food Poisoning
flu flu
Food Poisoned Food Poisoned
angina angina
Flu Flu

Power Strings : Fonctions de chaîne SQL imbriquées

Supposons que notre médecin veuille savoir combien de patients ont reçu un diagnostic pour chacune des maladies de la colonne diagnostic. Nous utiliserions la requête suivante pour obtenir cette information :

SELECT diagnostic, count(*)
FROM  patient_data
GROUP BY diagnostic
diagnostic count(*)
Flu 1
Food Poisoning 1
flu 1
food poisoning 1
angina 1
Flu 1

Comme nous pouvons le voir, le résultat n'est pas celui que nous attendions. La même maladie apparaît plusieurs fois parce que le médecin n'a pas été cohérent dans sa saisie. Un diagnostic de grippe apparaît comme "grippe", "grippe" et "grippe". Nous savons qu'il s'agit de la même chose, mais le moteur de base de données les voit comme trois choses différentes.

Nous avons les compétences nécessaires pour corriger cette requête et obtenir le résultat que nous voulons. Nous pouvons utiliser la même expression imbriquée pour nous débarrasser des caractères indésirables (espaces supplémentaires) et éliminer les erreurs de capitalisation. Voici à quoi cela ressemble :

SELECT lower(trim(diagnostic)), count(*)
FROM  patient_data
GROUP BY lower(trim(diagnostic))
diagnostic count(*)
flu 3
food poisoning 2
angina 1

En programmation, il est vraiment courant d'imbriquer des fonctions, ou d'appeler une fonction depuis l'intérieur d'une autre fonction pour l'utiliser comme paramètre. C'est ce que nous avons fait dans l'exemple précédent.

En savoir plus sur les fonctions SQL String

Dans cet article, nous avons abordé les importantes fonctions de chaîne SQL TRIM et LENGTH pour apprendre à supprimer les caractères superflus en SQL. Si vous souhaitez détecter les caractères cachés ou indésirables dans le cadre d'un diagnostic initial, utilisez LENGTH. Ensuite, utilisez TRIM pour vous débarrasser des caractères indésirables. Nous avons également abordé la question de l'imbrication des fonctions SQL, qui est une technique puissante de programmation.

Si vous souhaitez en savoir plus sur les fonctions de chaîne SQL, consultez notre cours Fonctions SQL standards . Essayez-le gratuitement dès aujourd'hui !