Maison >base de données >tutoriel mysql >SQL peut-il combiner les opérateurs « LIKE » et « IN », et sinon, quelles sont les alternatives ?

SQL peut-il combiner les opérateurs « LIKE » et « IN », et sinon, quelles sont les alternatives ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-21 13:22:14415parcourir

Can SQL Combine `LIKE` and `IN` Operators, and if not, What Are the Alternatives?

Combinaison LIKE et IN en SQL : alternatives à la combinaison directe

L'opérateur

SQL LIKE facilite la correspondance de modèles, tandis que IN vérifie l'appartenance à un ensemble de valeurs. Bien qu'une combinaison directe ne soit pas disponible, des alternatives efficaces existent pour gérer plusieurs LIKE conditions ou combiner LIKE avec un ensemble de valeurs.

Le défi des multiples LIKE Conditions

Utiliser plusieurs instructions OR avec LIKE devient lourde et potentiellement inefficace pour de nombreux modèles :

<code class="language-sql">WHERE something LIKE 'bla%'
OR something LIKE '%foo%'
OR something LIKE 'batz%'</code>

Recherche en texte intégral : une solution puissante

Pour les scénarios nécessitant plusieurs LIKE conditions ou une combinaison de LIKE et un ensemble de valeurs, la recherche en texte intégral (FTS) offre une approche supérieure. Oracle et SQL Server offrent tous deux des fonctionnalités FTS.

Implémentation FTS d'Oracle

Oracle utilise le mot-clé CONTAINS avec l'opérateur OR pour obtenir l'effet souhaité :

<code class="language-sql">WHERE CONTAINS(t.something, 'bla OR foo OR batz', 1) > 0</code>

Implémentation FTS de SQL Server

SQL Server utilise également CONTAINS, mais avec une syntaxe légèrement différente pour la correspondance de modèles :

<code class="language-sql">WHERE CONTAINS(t.something, '"bla*" OR "foo*" OR "batz*"')</code>

Remarque importante : Pour des performances FTS optimales, assurez-vous que la colonne appropriée (t.something dans ces exemples) est correctement indexée à l'aide d'un index de texte intégral.

Lectures complémentaires

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn