Voici la procédure stockée
...AND ((val Between 48 and 51) or (val Between 60 and 99) or (val Between 75 and 203))
J'essaie d'inclure le reste des paramètres qui devrait fonctionner comme suit: p>
@ start = '0' et @ fin = '100': dans ce cas, où la clause ressemblera à ce p> @ start = '48, 60 'et @ fin = '51, 99': Dans ce cas, où la clause ressemblera à ceci @ start = '48, 60,75 'et @ end = '51, 99,203': dans ce cas, où la clause ressemblera à ce p> ...AND ((val Between 48 and 51) or (val Between 60 and 99))
3 Réponses :
OK, je pense que la meilleure approche ici serait d'utiliser des tables Temp ou une variable de table. Laisse aller avec des tables Temps.
... join #StartEnd on val between start and end ... and exists (select 1 from #StartEnd where val between start and end)
Voilà y aller. Les commentaires / explications sont dans la requête
-- create a sample table declare @tbl table ( val int ) -- put in some sample data insert into @tbl values (48), (60), (51), (99), (75), (203) -- these are the input parameter declare @start varchar(100), @end varchar(100) -- and these are the input value select @start = '48,60,75', @end = '51,99,203' -- the actual query ; with start_end as ( -- here i am using [DelimitedSplit8K][1] select s = s.Item, e = e.Item from dbo.[DelimitedSplit8K](@start, ',') s inner join dbo.[DelimitedSplit8K](@end, ',') e on s.ItemNumber = e.ItemNumber ) select t.val from @tbl t where exists ( select * from start_end x where t.val between x.s and x.e )
Structure d'échantillon forte> (à partir de notre compréhension, nous devinons vos données): procédure forte> (vous utilisez simplement cela au lieu de Votre procédure): p> appel SP strud> p> fonction forte > (Appelé de SP): p> nous revers, si requis besoin de mettre à jour. P> p>
Avez-vous vraiment besoin de faire cela? Votre requête va être très complexe
Pouvez-vous recevoir une table temporaire chargée avec toutes ces valeurs au lieu de paramètres? De cette façon, ce serait simplement une jointure.
Pouvez-vous inclure des données d'échantillon et un cas de test de sortie attendu sage? Ce sera utile.
@Squirrel: J'ai la sélection de la plage de code (C #). Je peux modifier la manière dont les paramètres sont transmis de code à DB. Les sélections sont comme '48, 51 ',' 60,99 ', etc. Toute suggestion s'il vous plaît?
Comme @squirrel dit auparavant, il sera très complexe, surtout si
@start code> et
@end code> peut contenir plusieurs valeurs. Ainsi, vous aurez besoin d'une dynamicsql que je n'ai pas recommandé.
Faites-nous savoir la définition de
délimited_list_to_table ('', '') code>