Analyser chaîne séparée par des virgules de faire partie de la Liste des chaînes dans la clause where
Ma procédure stockée reçoit un paramètre qui est une chaîne séparée par des virgules:
DECLARE @Account AS VARCHAR(200)
SET @Account = 'SA,A'
J'ai besoin de faire cette déclaration:
WHERE Account IN ('SA', 'A')
Quelle est la meilleure pratique pour le faire?
Vous devez vous connecter pour publier un commentaire.
De créer cette fonction (sqlserver 2005+)
utiliser cette instruction
Comparant ma fonction de répartition pour XML split:
Testdata:
XML:
f_split:
Cela va changer d'une exécution, mais vous obtenez l'idée
@param
est nul, je pense que l'ensemble@param += @delimiter
doit être définie@param =ISNULL(@param,'')+@delimiter
Essayez celui -
DDL:
Requête:
De sortie:
Statistiques étendues:
SSMS ENSEMBLE DES STATISTIQUES EN TEMPS + IO:
XML:
CTE:
WHERE [Vertical] = @Vertical AND (@Account IS NULL OR Account IN (...))
@Vertical
,@Account
?Le moyen le plus efficace est d'utiliser la fonction CLR pour scinde une chaîne. Voir cet article pour des exemples et comparaison des performances