• 20 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 20/10/2020

Recherchez dans une chaîne de caractères grâce à LIKE

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

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  'Jean-Michel'  et  'Jean Michel'  font référence au même prénom, mais elles diffèrent à cause du tiret.

L'opérateur LIKE

Pour cela, il existe un opérateur très pratique en SQL : c'est LIKE.

Celui-ci permet 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%' ;

Un peu d'entraînement

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

'OpenClassrooms' LIKE '%Class%' 

 TRUE

'OpenClassrooms' LIKE '%Class%ms'

 TRUE

'OpenClassrooms' LIKE '%Class%ms%'

 TRUE

'OpenClassrooms' LIKE 'Open_lassrooms'

 TRUE

'OpenClassrooms' LIKE 'Open__lassrooms'

FALSE

'OpenClassrooms' LIKE '_OpenClassrooms'

 FALSE

'OpenClassrooms' LIKE 'Op__Cla%'

 TRUE

'OpenClassrooms' LIKE '%OpenClas%srooms%'

 TRUE

Majuscules et minuscules

Que renvoie l'expression 'OpenClassrooms' LIKE 'openclassrooms' ?

Et 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 :

SELECT * FROM entity WHERE lower(name) LIKE 'a%' ;

De cette manière, quelle que soit sa valeur, name sera converti en minuscules grâce à la fonction lower. 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 minuscule.

Les doublons

Dans les Panama Papers, il arrive qu'une société ait plusieurs orthographes différentes.

Par exemple, nous avons trouvé un intermédiaire dont le nom est Pacher Banking S.A.

Recherchons donc s'il existe des doublons :

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 cnt
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
HAVING
count(*) > 100 ;

Aller plus loin : gérer les doublons dans les Panama Papers

Conscients des nombreux doublons dans leur base de données, mais assez prudents pour ne pas fusionner à tort deux sociétés de même nom, les concepteurs de la base des Panama Papers ont ajouté des indications supplémentaires pour nous aiguiller.

Ils ont en effet lié certaines lignes des tables entity, intermediary et officers avec des liens de type "same name as" ou "same address as" (respectivement "même nom que", "même adresse que").

Vous pouvez trouver ces liens dans les tables assoc_intermediaries, assoc_entities et assoc_officers

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.

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