OpenClassrooms becomes an accredited US university.
Discover what this means for youTable of contents
- Part 1
Initiez-vous à la modélisation relationnelle
Tirez un maximum de ce cours
Organisez vos données selon la modélisation relationnelle
Prenez en main une base de données
Identifiez les lignes de votre table avec votre clé primaire
Mettez en relation plusieurs tables avec des clés étrangères
Identifiez les types d'associations entre vos tables
Quiz: S'initier à la modélisation relationnelle
- Part 2
Construisez des requêtes SQL simples
Affichez les données pertinentes avec SELECT
Filtrez vos lignes avec WHERE
Récupérez des données issues de plusieurs tables avec FROM
Liez des tables avec une jointure interne
Maîtrisez les jointures externes et naturelles
Identifiez toujours vos potentielles clés primaires
Quiz: Construire des requêtes SQL simples
- Part 3
Appliquez d'autres fonctionnalités à vos requêtes SQL
Recherchez selon une chaîne de caractères avec LIKE

Dans une base de données, il arrive souvent que deux chaînes de caractères différentes puissent décrire la même information.
Par exemple, les chaînes de caractères 'Anne-Marie' et 'Anne Marie' font référence au même prénom, mais elles diffèrent à cause du tiret.
Pour cela, il existe un opérateur très pratique en SQL : c'est LIKE.
#Découvrez LIKE
LIKE va vous permettre d'effectuer une recherche dans des chaînes de caractères. Il est utilisé lorsque l'on ne connaît qu'une partie de la chaîne de caractères, ou que l'on connaît sa forme générale.
On utilise LIKE avec les caractères _ et % . Le premier est employé pour remplacer un caractère inconnu, le second pour remplacer 0, 1 ou plusieurs caractères inconnus.
Par exemple, pour connaître toutes les sociétés qui commencent par le caractère A, nous pouvons écrire ceci :
SELECT * FROM entity WHERE name LIKE 'A%' ;
#Entraînez-vous avec quelques exemples
Voici dans ce tableau différentes expressions utilisant LIKE (colonne de gauche), ainsi que la valeur renvoyée par l'expression en question (colonne de droite).
Expression | Résultat |
`'Big Data Crunchers' LIKE '%Big%'` | TRUE |
`'Big Data Crunchers' LIKE '%Big%chers'` | TRUE |
`'Big Data Crunchers' LIKE '%Big%chers%'` | TRUE |
`'Big Data Crunchers' LIKE 'Big _ata Crunchers'` | TRUE |
`'Big Data Crunchers' LIKE 'Big __ata Crunchers'` | FALSE |
`'Big Data Crunchers' LIKE '_Big Data Crunchers'` | FALSE |
`'Big Data Crunchers' LIKE 'Big D___ Crun%'` | TRUE |
`'Big Data Crunchers' LIKE '%Big D%a%ta Crunchers'` | TRUE |
#Gérez les minuscules et majuscules
Que renvoie l'expression 'OpenClassrooms' LIKE 'openclassrooms' ?
Eh bien... cela dépend ! Les SGBDR n'ont pas tous le même comportement : certains vous renverront TRUE , d'autres FALSE .
Pour ne jamais vous tromper, je vous conseille donc de vous y prendre comme ceci, en utilisant la fonction scalaire LOWER, qui convertit les chaînes de caractères en minuscules :
SELECT * FROM entity WHERE lower(name) LIKE 'a%' ;
De cette manière, quelle que soit sa valeur, name sera converti en minuscules. Une fois la conversion faite, écrivez votre pattern sans aucune majuscule (ici le pattern est a% ).
Cette requête vous renverra toutes les sociétés dont le nom commence par un A, qu'il soit en majuscule ou en minuscule !
#Retournons à notre investigation
Dans les Panama Papers, il arrive qu'une société ait plusieurs orthographes différentes. Nous allons voir comment gérer cela dans cette vidéo :
Nous connaissons maintenant bien notre intermédiaire, dont le nom est Pacher Banking S.A.
Recherchons donc s'il existe des intermédiaires avec un nom similaire :
SELECT * FROM intermediary WHERE lower(name) LIKE '%pacher%banking%' ;
Oui ! Il y a 2 lignes qui ont un nom similaire. Correspondent-elles à la même société ? Comme elles ont la même adresse, nous considérerons ici que oui (même si ce n'est pas une certitude absolue).
Nous pouvons donc adapter la requête du chapitre précédent, en intégrant l'opérateur LIKE :
SELECT
i.id as intermediary_id,
i.name as intermediary_name,
e.jurisdiction,
e.jurisdiction_description,
count(*) as nb_societes
FROM
intermediary i,
assoc_inter_entity a,
entity e
WHERE
a.entity = e.id
AND a.inter = i.id
AND (lower(i.name) LIKE '%pacher%banking%'
OR
lower(i.name) LIKE '%plouf%financial%services%')
GROUP BY
i.id, i.name, e.jurisdiction, e.jurisdiction_description
ORDER BY
nb_societes DESC

Et là, surprise ! Tout en haut des résultats, on voit que des sociétés ont été créées par des intermédiaires dont les identifiants sont 5002 et 5003. À en regarder les noms, il s'agit à priori des mêmes intermédiaires que nous avons ciblés depuis le début, c'est-à-dire les 5000 et 5001 !
Sauf que là, quand on regarde les pays dans lesquels ces 2 intermédiaires ont eu le plus d'activité, on tombe bien sur des pays considérés (par l'Union européenne au moment de la publication des Panama Papers) comme des paradis fiscaux !
Bravo, vous allez avoir de quoi alimenter votre article avec des révélations passionnantes !
#À vous de jouer

#Contexte
Ah, les chaînes de caractères qui s’orthographient de différentes manières…
Dans votre carrière de data journaliste, ceci vous causera toujours du fil à retordre. En effet, il est malheureusement extrêmement rare que des données soient propres dès le départ. Une grande partie du travail d’analyse de données consiste à nettoyer les données. Afin d’être sûr que vous avez bien été exhaustif dans votre analyse des Panama Papers, il faut maintenant vérifier que vous n’êtes pas passé à côté d’une information importante dans la table entity .
#Consignes
Maintenant que vous savez vérifier si des lignes de intermediary font référence à un même intermédiaire, vérifiez également si la table entity ne contient pas d'autres sociétés appelées Big Data Crunchers.
Écrivez la requête permettant de répondre à cette question.
#Vérifiez votre travail
Pour obtenir la requête attendue, il faut inclure des caractères% dans le pattern, et convertir le tout en minuscules :
SELECT * FROM entity WHERE lower(name) LIKE '%big%data%crunchers%'
Visiblement, il ne semble y avoir qu'une seule ligne correspondant à cette société, c'est bien la ligne que l'on étudie depuis le début.
#En résumé
Pour rechercher des chaînes de caractères incomplètes, on utilise LIKE.
On spécifie un pattern, où
_remplace un caractère, et où%remplace plusieurs (ou aucun) caractères.Pour mettre un texte en majuscules, on utilise la fonction scalaire upper(), ou bien lower() pour le mettre en minuscules.
Dans le chapitre suivant, nous continuerons à utiliser LIKE, dans l'optique de créer un mini moteur de recherche !
- Up to 100% of your training program funded
- Flexible start date
- Career-focused projects
- Individual mentoring