Dat hoeft niet, je kunt het omzeilen door iets te doen als
SELECT *
FROM [Query]
WHERE (@Parameter = 1 AND Column1 = 8)
OR (@Parameter = 2 AND Column2 = 8)
OR (@Parameter = 3 AND Column3 = 8)
Maar alleen omdat je iets kunt doen, wil nog niet zeggen dat je het moet doen. Minder uitgebreide SQL betekent niet betere prestaties, dus gebruik zoiets als:
IF @Parameter = 1
BEGIN
SELECT *
FROM [Query]
WHERE Column1 = 8
END
ELSE IF @Parameter = 2
BEGIN
SELECT *
FROM [Query]
WHERE Column2 = 8
END
ELSE IF @Parameter = 3
BEGIN
SELECT *
FROM [Query]
WHERE Column3 = 8
END
terwijl gelijk aan de eerste zoekopdracht zou moeten resulteren in betere prestaties omdat deze beter zal worden geoptimaliseerd.