Catégories :

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

CONTAINS

Renvoie true si expr1 contient expr2. Les deux expressions doivent être des expressions textuelles ou binaires.

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.

Syntaxe

CONTAINS( <expr1> , <expr2> )
Copy

Arguments

expr1

La chaîne dans laquelle effectuer la recherche.

expr2

La chaîne à rechercher.

Renvoie

Renvoie un BOOLEAN ou NULL :

  • Renvoie TRUE si expr2 se trouve à l’intérieur de expr1.

  • Renvoie FALSE si expr2 ne se trouve pas à l’intérieur de expr1.

  • Renvoie NULL si l’une des expressions d’entrée est NULL.

Notes sur l’utilisation

Pour les comparaisons qui correspondent à une chaîne par rapport à plusieurs modèles spécifiés, vous pouvez utiliser les fonctions suivantes :

Détails du classement

The collation specifications of all input arguments must be compatible.

Cette fonction ne fonctionne pas avec les spécifications de classement suivantes :

  • pi (insensible à la ponctuation).

  • cs-ai (sensible à la casse, insensible aux accents)

Exemples

Ces exemples utilisent la fonction CONTAINS.

Déterminer si les valeurs des colonnes contiennent une chaîne

Créer une table avec une seule colonne contenant des valeurs de chaîne.

CREATE OR REPLACE TABLE strings_test (s VARCHAR);

INSERT INTO strings_test values
  ('coffee'),
  ('ice tea'),
  ('latte'),
  ('tea'),
  (NULL);

SELECT * from strings_test;
Copy
+---------+
| S       |
|---------|
| coffee  |
| ice tea |
| latte   |
| tea     |
| NULL    |
+---------+

Déterminer si les valeurs de la colonne s contiennent la chaîne te :

SELECT * FROM strings_test WHERE CONTAINS(s, 'te');
Copy
+---------+
| S       |
|---------|
| ice tea |
| latte   |
| tea     |
+---------+

Utiliser CONTAINS avec un classement

Dans l’exemple suivant, CONTAINS renvoie des résultats différents pour les mêmes valeurs d’argument avec des spécifications de classement différentes.

SELECT CONTAINS(COLLATE('ñ', 'en-ci-ai'), 'n'),
       CONTAINS(COLLATE('ñ', 'es-ci-ai'), 'n');
Copy
+-----------------------------------------+-----------------------------------------+
| CONTAINS(COLLATE('Ñ', 'EN-CI-AI'), 'N') | CONTAINS(COLLATE('Ñ', 'ES-CI-AI'), 'N') |
|-----------------------------------------+-----------------------------------------|
| True                                    | False                                   |
+-----------------------------------------+-----------------------------------------+