Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

passer un opérande en paramètre sql

En supposant que tous les entiers positifs <2 milliards, cette solution évite les requêtes multiples et le SQL dynamique. OPTION (RECOMPILE) aide à contrecarrer la détection des paramètres, mais cela peut ne pas être nécessaire en fonction de la taille de la table, de vos paramètres de paramétrage et de votre paramètre "optimiser pour la charge de travail ad hoc".

WHERE [Amount] BETWEEN 
CASE WHEN @operand LIKE '<%' THEN 0
     WHEN @operand = '>' THEN @operant + 1
     ELSE @operant END
AND
CASE WHEN @operand LIKE '>%' THEN 2147483647
     WHEN @operand = '<' THEN @operant - 1
     ELSE @operant END
OPTION (RECOMPILE);