2017-10-12 11 views
1

J'ai une procédure stockée et je veux passer un paramètre de chaîne qui contient des nombres représentant les étapes qui doivent être exécutées.SQL Server: vérifie si la chaîne contient des nombres (simple ou double chiffres)

Par exemple:

dc.SProcCP("1,2,14,24") //steps 1, 2, 14 and 24 need to be executed 

Dans ma procédure stockée, j'ai un ensemble de if s. Chacun vérifie si l'argument d'entrée contient une étape. Comme dans le premier if:

if (CHARINDEX("1",@inputsteps)>0 .... 

Mais ce sera vrai si les étapes contiennent « 1 » ou si les mesures contiennent « 14 ».

Comment puis-je résoudre ce problème?

+1

diviser votre chaîne en pièces varchar et jeté chaque partie à un nombre entier – sepupic

+0

@sepupic peut écrire le code pour cela? – aggicd

+0

il suffit de rechercher des fonctions SplitStr dans Internet – sepupic

Répondre

1

vous pouvez simplement vérifier comme ci-dessous

if (CHARINDEX('1,',CONCAT(@inputsteps,','))>0 .... 
+0

c'est intelligent! THX! – aggicd

+0

@aggicd Je conseille que la première ligne dans proc devrait être 'SET @ inputsteps = CONCAT (@inputsteps + ',')'; cela n'a pas de sens de faire la même opération avec agian et encore, en augmentant le traitement SQL – DhruvJoshi

+0

Essayez ceci avec @inputsteps varchar (100) = '11, 24 ' – sepupic