Catégories :

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

[ NOT ] ILIKE

Effectue une comparaison insensible à la casse pour déterminer si une chaîne correspond ou non à un modèle spécifié. Pour une correspondance ne respectant pas la casse, utilisez LIKE à la place.

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

Astuce

Vous pouvez utiliser le service d’optimisation de recherche pour améliorer les performances des requêtes qui appellent cette fonction. Pour plus de détails, voir Service d’optimisation de la recherche.

Voir aussi:

[ NOT ] LIKE , [ NOT ] RLIKE

Syntaxe

<subject> [ NOT ] ILIKE <pattern> [ ESCAPE <escape> ]

ILIKE( <subject> , <pattern> [ , <escape> ] )
Copy

Arguments

Obligatoire :

subject

Sujet devant correspondre.

pattern

Modèle devant correspondre.

Facultatif :

escape

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

Renvoie un BOOLEAN ou un NULL.

  • Lorsque ILIKE est spécifié, la valeur est TRUE s’il y a une correspondance. Sinon, renvoie FALSE.

  • Lorsque NOT ILIKE est spécifié, la valeur est TRUE s’il n’y a pas de correspondance. Sinon, renvoie FALSE.

  • Lorsque ILIKE ou NOT ILIKE est spécifié, renvoie NULL si l’un des arguments est NULL.

Notes sur l’utilisation

  • Pour inclure des guillemets simples ou d’autres caractères spéciaux dans la correspondance de modèles, vous pouvez utiliser une séquence d’échappement de barre oblique inverse.

  • 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.

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

    • 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 pattern incluent les caractères de nouvelle ligne (n) dans subject comme des correspondances.

  • La correspondance de modèles 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 %.

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

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

    'SOMETHING%' ILIKE '%\\%%' ESCAPE '\\';
    
    Copy

    Pour des exemples d’utilisation de caractères d’échappement, voir les exemples de ILIKE. Pour plus d’exemples d’utilisation de caractères d’échappement, et en particulier de la barre oblique inverse comme caractère d’échappement, voir les exemples de LIKE.

Détails du classement

Seules les spécifications de classement upper, lower, et trim sont prises en charge. Les combinaisons avec upper, lower, et trim sont également prises en charge (par exemple, upper-trim et lower-trim), à l’exception des combinaisons locales (par exemple, en-upper).

Exemples

Créer une table contenant des chaînes :

CREATE OR REPLACE TABLE ilike_ex(name VARCHAR(20));
INSERT INTO ilike_ex VALUES
  ('John  Dddoe'),
  ('Joe   Doe'),
  ('John_down'),
  ('Joe down'),
  (null);
Copy

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

SELECT * 
  FROM ilike_ex 
  WHERE name ILIKE '%j%h%do%'
  ORDER BY 1;
Copy
+-------------+                                                                 
| NAME        |
|-------------|
| John  Dddoe |
| John_down   |
+-------------+
SELECT *
  FROM ilike_ex
  WHERE name NOT ILIKE '%j%h%do%'
  ORDER BY 1;
Copy
+-----------+
| NAME      |
|-----------|
| Joe   Doe |
| Joe down  |
+-----------+
SELECT * 
  FROM ilike_ex 
  WHERE name ILIKE '%j%h%^_do%' ESCAPE '^'
  ORDER BY 1;
Copy
+-----------+                                                                   
| NAME      |
|-----------|
| John_down |
+-----------+