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!