Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Übergeben eines Operanden als SQL-Parameter

Unter der Annahme, dass alle positiven Ganzzahlen <2 Milliarden sind, vermeidet diese Lösung mehrere Abfragen und dynamisches SQL. OPTION (RECOMPILE) hilft, Parameter-Sniffing zu vereiteln, aber dies ist je nach Größe der Tabelle, Ihren Parametrisierungseinstellungen und Ihrer Einstellung "Für Ad-hoc-Workload optimieren" möglicherweise nicht erforderlich.

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);