Verwenden von Coalesce in Wo Statement

Ich habe eine Frage hier und ich bin neugierig, wenn es eine kürzere Art des Schreibens dieser Abfrage, was bedeutet, die Abfrage von der Verwendung eines IF Argument zu reduzieren, um festzustellen, ob es die param oder nicht in der statement verwenden sollte. Siehe unten:

  @Param varchar(10) = NULL IF @Param IS NOT NULL BEGIN SELECT * FROM TABLE WHERE Column = @Param END ELSE BEGIN SELECT * FROM TABLE END 

Könnte dies auf eine einfache Abfrage reduziert werden?

  @Param varchar(10) = NULL SELECT * FROM TABLE WHERE Column = COALESCE( Any, @Param ) 

Ich sah Coalesce , aber ich sah nicht, ob ich Any Art von Feature verwenden könnte. Ich hoffe das macht Sinn.

Frage ist, wie dies zu erreichen ist. Zweite Frage ist, was wäre besser auf performance?

Es gibt keinen Stil Befehl, aber wenn Sie die @Param zuerst und dann den Wert in der Spalte selbst, das sollte funktionieren …

 SELECT * FROM TABLE WHERE Column = COALESCE(@Param, Column) 

Wenn @Param Null ist, wird es ignoriert und das nächste Element in der list wird verwendet.

Sie können auch IsNull , um dasselbe zu tun …

 SELECT * FROM TABLE WHERE Column = ISNULL(@Param, Column) 

Um den zweiten Teil der Frage zu beantworten, ist mein Gefühl, dass eine separate Aussage immer effizienter sein wird. Die komprimierte Version könnte weniger Code sein, ist aber nicht unbedingt einfacher zu verstehen oder schneller zu laufen.