sql >> Databasteknik >  >> RDS >> Sqlserver

skicka en operand som en sql-parameter

Om man antar att alla positiva heltal <2 miljarder, undviker denna lösning flera frågor och dynamisk SQL. OPTION (RECOMPILE) hjälper till att förhindra parametersniffning, men detta kanske inte är nödvändigt beroende på tabellens storlek, dina parameterinställningar och inställningen "optimera för ad hoc-arbetsbelastning".

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


  1. Hur man löser tvetydiga matchningar när man kedjar genererade Jooq-klasser

  2. Anropar lagrad procedur som innehåller dynamisk SQL från Trigger

  3. SQLite Self-Join

  4. InnoDB:Operativsystemfel nummer 23 i en filoperation