Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

passando um operando como um parâmetro sql


Assumindo que todos os inteiros positivos <2 bilhões, esta solução evita múltiplas consultas e SQL dinâmico. OPTION (RECOMPILE) ajuda a impedir a detecção de parâmetros, mas isso pode não ser necessário dependendo do tamanho da tabela, suas configurações de parametrização e sua configuração "otimizar para carga de trabalho 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);