• 12 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 15/05/2023

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
Résultat de la requête
Résultat de la requête

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 !

Exemple de certificat de réussite
Exemple de certificat de réussite