Recherche efficace de valeurs dans des colonnes SQL Server séparées par des virgules
Ce guide montre comment localiser efficacement les lignes dans SQL Server 2008 où une valeur spécifique existe dans une colonne délimitée par des virgules. Par exemple, étant donné une colonne contenant « Chat, Chien, Moineau, Truite, Vache, Hippocampe », vous devez déterminer si « Chat » est présent.
Le mot-clé IN
ne convient pas ici, car il ne correspond qu'à des valeurs exactes. Les méthodes utilisant CONTAINS()
ou LIKE
seuls risquent des résultats inexacts en raison de correspondances partielles ou de virgules supplémentaires.
La solution :
L'approche la plus fiable utilise la manipulation de chaînes et l'opérateur LIKE
:
WHERE (',' RTRIM(MyColumn) ',') LIKE '%,' @search ',%'
Explication :
',' RTRIM(MyColumn) ','
).RTRIM()
supprime tous les espaces de fin de la valeur de la colonne, évitant ainsi les faux négatifs.LIKE
avec des caractères génériques (%
) garantit une correspondance complète du terme de recherche, en gérant correctement les valeurs au début, au milieu ou à la fin de la liste et en ignorant virgules de début ou de fin.Cette méthode garantit une identification précise de la valeur de recherche dans la liste séparée par des virgules, quelle que soit sa position ou la présence de virgules supplémentaires.
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!