Catégories :

Fonctions de chaîne et fonctions binaires (Correspondance/Comparaison)

LIKE ALL

Permet l’appariement des chaînes sensibles à la casse sur la base d’une comparaison avec un ou plusieurs motifs.

L’opération est similaire à LIKE. Si et seulement si la chaîne d’entrée correspond à tous les motifs, la chaîne d’entrée est renvoyée.

Voir aussi :

LIKE

Syntaxe

<subject> LIKE ALL (<pattern1> [, <pattern2> ... ] ) [ ESCAPE <escape_char> ]

Arguments

Obligatoire :

sujet

La chaîne à comparer au(x) modèle(s).

motif#

Le ou les modèles auxquels la chaîne doit être comparée. Vous devez spécifier au moins un modèle.

Facultatif :

car_échappement

Caractère(s) inséré(s) devant un caractère générique pour indiquer que le caractère générique doit être interprété comme un caractère standard et non comme un caractère générique.

Renvoie

Le type de données de la valeur renvoyée est VARCHAR.

Notes sur l’utilisation

  • Les caractères génériques SQL sont pris en charge dans le motif :

    • Un trait de soulignement (_) correspond à n’importe quel caractère.

    • Un signe de pourcentage (%) correspond à toute séquence de zéro caractère ou plus.

  • Les caractères génériques du motif incluent les caractères de nouvelle ligne (\n) dans sujet comme des correspondances.

  • Le modèle est considéré comme une correspondance s’il correspond à toute la chaîne d’entrée (sujet). Pour faire correspondre une séquence n’importe où dans une chaîne, commencez et terminez le modèle par %. Exemple : “%chose%”.

  • NULL ne correspond pas à NULL. En d’autres termes, si le sujet est NULL et l’un des motifs est NULL, cela ne sera pas considéré comme une correspondance.

  • Si la fonction est utilisée avec une sous-requête, celle-ci doit renvoyer une seule ligne.

    Par exemple, les éléments suivants doivent être utilisés uniquement si la sous-requête renvoie une seule ligne :

    SELECT ...
        WHERE x LIKE ALL (SELECT ...)
    

Exemples

Créer une table contenant des chaînes :

CREATE OR REPLACE TABLE like_all_example(subject varchar(20));
INSERT INTO like_all_example VALUES
    ('John  Dddoe'),
    ('Joe   Doe'),
    ('John_do%wn'),
    ('Joe down'),
    ('Tom   Doe'),
    ('Tim down'),
    (null);

Cette requête montre comment utiliser des motifs avec des caractères génériques (%) pour rechercher des correspondances :

SELECT * 
  FROM like_all_example 
  WHERE subject LIKE ALL ('%Jo%oe%','J%e')
  ORDER BY subject;
+-------------+
| SUBJECT     |
|-------------|
| Joe   Doe   |
| John  Dddoe |
+-------------+

Cette requête montre comment tous les motifs doivent correspondre pour un résultat réussi :

SELECT * 
  FROM like_all_example 
  WHERE subject LIKE ALL ('%Jo%oe%','J%n')
  ORDER BY subject;
+---------+
| SUBJECT |
|---------|
+---------+

Cette requête montre comment utiliser un caractère d’échappement pour indiquer que les caractères qui sont généralement des caractères génériques (« _ ») (« % ») doivent être traités comme des littéraux.

SELECT * 
  FROM like_all_example 
  WHERE subject LIKE ALL ('%J%h%^_do%', 'J%^%wn') ESCAPE '^'
  ORDER BY subject;
+------------+
| SUBJECT    |
|------------|
| John_do%wn |
+------------+