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

SQL Server 2008, verschiedene WHERE-Klauseln mit einer Abfrage

Das müssen Sie nicht, Sie können es umgehen, indem Sie so etwas wie

tun
SELECT  *
FROM    [Query]
WHERE   (@Parameter = 1 AND Column1 = 8)
OR      (@Parameter = 2 AND Column2 = 8)
OR      (@Parameter = 3 AND Column3 = 8)

Aber nur weil man etwas kann, heißt das noch lange nicht, dass man es auch sollte. Weniger ausführliches SQL bedeutet keine bessere Leistung, also verwenden Sie etwas wie:

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

obwohl sie der ersten Abfrage entspricht, sollte sie zu einer besseren Leistung führen, da sie besser optimiert wird.