Maison >base de données >tutoriel mysql >Comment puis-je rechercher efficacement des valeurs dans des chaînes délimitées par des virgules dans SQL Server ?

Comment puis-je rechercher efficacement des valeurs dans des chaînes délimitées par des virgules dans SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-09 17:32:42774parcourir

How Can I Efficiently Search for Values Within Comma-Delimited Strings in SQL Server?

Localisation de valeurs spécifiques dans des colonnes SQL Server séparées par des virgules

En travaillant avec SQL Server 2008, vous devrez peut-être rechercher des lignes où se trouve une valeur particulière dans une colonne contenant des valeurs séparées par des virgules. Le défi réside dans la localisation de cette valeur n'importe où dans la chaîne, pas seulement comme une correspondance exacte de chaîne.

Examinons ce problème :

  • Exemple de tableau :

    <code class="language-sql">  CREATE TABLE DelimitedValues (id INT, ColumnName VARCHAR(100));
      INSERT INTO DelimitedValues VALUES
      (1, 'Cat,Dog,Sparrow,Trout,Cow,Seahorse'),
      (2, 'Mouse');</code>
  • Objectif : Identifier les lignes où ColumnName inclut des valeurs spécifiques telles que « Chat » ou « Mouton ».

Les méthodes standard comme IN échouent car elles ne gèrent pas les valeurs intégrées dans les listes séparées par des virgules. Une approche plus sophistiquée est nécessaire.

Une solution puissante utilise la concaténation de chaînes et l'opérateur LIKE :

<code class="language-sql">SELECT id
FROM DelimitedValues
WHERE (',' + RTRIM(ColumnName) + ',') LIKE '%,' + @search + ',%'</code>

Cette technique garantit que la valeur de recherche (@search) est entourée de virgules, permettant la détection quelle que soit sa position dans la liste. Par exemple :

  • ColumnName contient 'Chat, Chien, Moineau, Truite, Vache, Hippocampe'
  • @search est 'Chat'
  • Résultat : La ligne 1 est renvoyée car « Chat » se trouve dans la chaîne délimitée par des virgules.

Cette méthode gère de manière fiable tous les cas : valeurs au début, au milieu ou à la fin de la liste et entrées à valeur unique.

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