Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

passando un operando come parametro sql

Supponendo che tutti gli interi positivi <2 miliardi, questa soluzione evita query multiple e SQL dinamico. OPTION (RECOMPILE) aiuta a contrastare lo sniffing dei parametri, ma ciò potrebbe non essere necessario a seconda delle dimensioni della tabella, delle impostazioni di parametrizzazione e dell'impostazione "ottimizza per carico di lavoro 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);