Maison > base de données > tutoriel mysql > Comment puis-je combiner efficacement les opérateurs LIKE et IN dans les requêtes SQL ?

Comment puis-je combiner efficacement les opérateurs LIKE et IN dans les requêtes SQL ?

Patricia Arquette
Libérer: 2025-01-21 13:27:09
original
667 Les gens l'ont consulté

How Can I Efficiently Combine LIKE and IN Operators in SQL Queries?

Combinaison d'expressions "LIKE" et "IN" en SQL

En SQL, l'opérateur LIKE est utilisé pour effectuer une correspondance de chaîne basée sur un modèle, tandis que l'opérateur IN vérifie si une valeur correspond à une valeur dans une liste de valeurs spécifiée. Cependant, il n’existe aucun moyen direct de combiner ces deux opérateurs en une seule expression.

Une solution courante consiste à utiliser une série d'instructions OR avec l'opérateur LIKE, par exemple :

<code class="language-sql">WHERE something LIKE 'bla%' OR something LIKE '%foo%' OR something LIKE 'batz%'</code>
Copier après la connexion

Cette approche est verbeuse et peut devenir lourde lorsque le nombre de modèles est important. Une solution plus flexible et plus lisible consiste à utiliser une sous-requête :

<code class="language-sql">SELECT * FROM table WHERE something IN (
  SELECT * FROM (VALUES ('bla%'), ('%foo%'), ('batz%')) AS patterns(pattern)
)</code>
Copier après la connexion

Cependant, dans certains systèmes de bases de données, il peut exister une option plus efficace appelée Recherche en texte intégral (FTS). Oracle et SQL Server fournissent tous deux des implémentations FTS qui offrent des fonctionnalités améliorées pour la recherche de données texte.

Utilisez FTS combiné avec LIKE et IN

FTS permet une correspondance de modèles plus complexe et inclut un opérateur spécial appelé CONTAINS. Cet opérateur vous permet de combiner plusieurs modèles en une seule expression, combinant efficacement les fonctionnalités de LIKE et IN.

Dans Oracle, la syntaxe d'utilisation de CONTAINS est :

<code class="language-sql">WHERE CONTAINS(column, 'pattern1 OR pattern2 OR ...') > 0</code>
Copier après la connexion

Dans SQL Server, la syntaxe est légèrement différente :

<code class="language-sql">WHERE CONTAINS(column, '"pattern1*" OR "pattern2*" OR ...')</code>
Copier après la connexion

En utilisant FTS, vous pouvez créer des requêtes plus propres et plus efficaces qui peuvent rechercher plusieurs modèles en une seule étape. Cela peut améliorer considérablement les performances, en particulier sur les grands ensembles de données avec des conditions de recherche complexes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal