4th Jul 2022 5 minutes de lecture Comment supprimer les caractères indésirables en SQL Ignacio L. Bisso erreurs courantes en sql qualité des données comment faire en sql bases du sql Table des matières L'importance de la normalisation des chaînes de caractères dans votre base de données Résolution des problèmes avec les fonctions de chaîne SQL Fonctions SQL pour la suppression des caractères invisibles et indésirables Power Strings : Fonctions de chaîne SQL imbriquées En savoir plus sur les fonctions SQL String 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 ! Tags: erreurs courantes en sql qualité des données comment faire en sql bases du sql