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 ?
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'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!