Catégories :

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

LIKE

Permet l’appariement des chaînes sensibles à la casse sur la base d’une comparaison avec un modèle. Pour une correspondance ne respectant pas la casse, utilisez ILIKE à la place.

Si la chaîne de sujet correspond au modèle, cela retourne la chaîne de sujet.

LIKE, ILIKE et RLIKE effectuent tous des opérations similaires ; cependant, RLIKE utilise la syntaxe POSIX EXE (expression régulière étendue) au lieu de la syntaxe de motif SQL utilisée par LIKE et ILIKE.

Voir aussi

ILIKE , RLIKE , LIKE ANY

Syntaxe

<subject> LIKE <pattern> [ ESCAPE <escape> ]

LIKE( <subject> , <pattern> [ , <escape> ] )

Arguments

Obligatoire :

sujet

Sujet devant correspondre. Il s’agit généralement d’un VARCHAR, bien que d’autres types de données puissent être utilisés.

motif

Modèle devant correspondre. Il s’agit généralement d’un VARCHAR, bien que d’autres types de données puissent être utilisés.

Facultatif :

é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 identique à celui du sujet.

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.

  • La correspondance de modèle LIKE couvre la chaîne entière. Pour faire correspondre une séquence n’importe où dans une chaîne, commencez et terminez le modèle par %.

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

  • Il n’y a pas de caractère d’échappement par défaut.

  • Si vous utilisez la barre oblique inversée en tant que caractère d’échappement, vous devez alors spécifier l’échappement de la barre oblique inversée dans la clause ESCAPE. Par exemple, la commande suivante spécifie que le caractère d’échappement est la barre oblique inversée, puis utilise ce caractère d’échappement pour rechercher « % » comme un littéral (sans le caractère d’échappement, le « % » serait traité comme un caractère générique) :

    'SOMETHING%' LIKE '%\\%%' ESCAPE '\\';
    

    Pour obtenir des exemples d’utilisation des caractères d’échappement, et en particulier de la barre oblique inversée en tant que caractère d’échappement, voir Exemples.

Détails du classement

Arguments with collation specifications are currently not supported.

Exemples

Les exemples suivants montrent l’utilisation de LIKE, NOT LIKE et du caractère générique % :

CREATE OR REPLACE TABLE like_ex(subject varchar(20));
INSERT INTO like_ex VALUES
    ('John  Dddoe'),
    ('Joe   Doe'),
    ('John_down'),
    ('Joe down'),
    ('Elaine'),
    (''),    -- empty string
    (null);
SELECT * FROM like_ex WHERE subject LIKE '%Jo%oe%';
+-------------+
| SUBJECT     |
|-------------|
| John  Dddoe |
| Joe   Doe   |
+-------------+
SELECT * FROM like_ex WHERE subject LIKE '%J%h%^_do%' ESCAPE '^';
+-----------+
| SUBJECT   |
|-----------|
| John_down |
+-----------+
SELECT * FROM like_ex WHERE subject NOT LIKE 'John%';
+-----------+
| SUBJECT   |
|-----------|
| Joe   Doe |
| Joe down  |
| Elaine    |
|           |
+-----------+
SELECT * FROM like_ex WHERE subject NOT LIKE '';
+-------------+
| SUBJECT     |
|-------------|
| John  Dddoe |
| Joe   Doe   |
| John_down   |
| Joe down    |
| Elaine      |
+-------------+

L’exemple suivant utilise une clause ESCAPE :

INSERT INTO like_ex (subject) VALUES 
    ('100 times'),
    ('1000 times'),
    ('100%');

Sans le caractère d’échappement, le signe pourcentage (« % ») est traité comme un caractère générique :

SELECT * FROM like_ex WHERE subject LIKE '100%'
    ORDER BY 1;
+------------+
| SUBJECT    |
|------------|
| 100 times  |
| 100%       |
| 1000 times |
+------------+

Avec le caractère d’échappement, le signe pourcentage (« % ») est traité comme un littéral :

SELECT * FROM like_ex WHERE subject LIKE '100^%' ESCAPE '^'
    ORDER BY 1;
+---------+
| SUBJECT |
|---------|
| 100%    |
+---------+

L’exemple suivant utilise une clause ESCAPE dans laquelle la barre oblique inverse est le caractère d’échappement. Notez que la barre oblique inverse elle-même doit être échappée à la fois dans la clause ESCAPE et dans l’expression :

SELECT * FROM like_ex WHERE subject LIKE '100\\%' ESCAPE '\\'
    ORDER BY 1;
+---------+
| SUBJECT |
|---------|
| 100%    |
+---------+