Maison  >  Article  >  base de données  >  Comment rechercher efficacement plusieurs valeurs dans un seul champ en SQL ?

Comment rechercher efficacement plusieurs valeurs dans un seul champ en SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 02:55:02972parcourir

  How to Efficiently Search for Multiple Values within a Single Field in SQL?

Comment rechercher plusieurs valeurs dans le même champ en SQL

Lors de la construction d'un algorithme de recherche, il est souvent nécessaire de casser une chaîne dans ses composants et recherchez chaque pièce individuellement. Ceci est particulièrement utile lorsqu'il s'agit de termes de recherche séparés par des espaces.

Pour y parvenir en SQL, on peut envisager d'utiliser l'opérateur LIKE avec un caractère générique pour faire correspondre les caractères avant et après chaque terme de recherche. Cependant, cette approche n'est pas très efficace, car elle nécessite plusieurs clauses LIKE et peut entraîner des problèmes de performances.

Au lieu de cela, une solution plus efficace consiste à utiliser l'opérateur IN. L'opérateur IN vous permet de rechercher des valeurs qui correspondent à l'une des valeurs spécifiées dans une liste. Par exemple, la requête suivante recherche les produits dont le nom contient « Sony » ou « TV » :

SELECT name FROM Products WHERE name IN ('Sony', 'TV');

Pour rechercher plusieurs valeurs séparées par des espaces, divisez simplement la chaîne dans un tableau et utilisez l'opérateur IN comme suit :

$search = "Sony TV with FullHD support";
$search = explode(' ', $search);

SELECT name
FROM Products
WHERE name IN (
    $search[0],
    $search[1],
    ...
);

Vous pouvez également utiliser OR avec l'opérateur LIKE comme indiqué ci-dessous :

SELECT name
FROM Products
WHERE name LIKE '%$search[0]%' OR
      name LIKE '%$search[1]%' OR
      ...;

Cependant, il est important de noter que l'utilisation de OR nécessite au au moins une condition doit être vraie, tandis que AND exige que toutes les conditions soient vraies.

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