3 つのパラメーターを持つストアド プロシージャがあるとします。すべての可能性のうち、私は、あまりにも多くWHERE
を使用して制御不能になることなく、単一の句でこれを達成しようとしています...() AND () OR ()
例:
//Params
@CITY VARCHAR(100) = NULL,
@GENDER VARCHAR(100) = NULL,
@AGE VARCHAR(100) = NULL
存在する場合は各変数に対して使用できると思いますがIF BEGIN ... END
、それではコードが必要以上に長くなります..
以下のこの方法は長すぎるため機能しません (このような約 10 の異なるフィールドがありますが、例は 3 つだけです)。
SELECT NAME FROM TABLE
WHERE (
(CITY=@CITY AND GENDER=@GENDER AND AGE=@AGE)
OR (CITY=@CITY AND GENDER=@GENDER)
OR (GENDER=@GENDER AND AGE=@AGE)
OR (CITY=@CITY AND AGE=@AGE)
OR (CITY=@CITY)
OR (GENDER=@GENDER)
OR (AGE=@AGE)
)
これを行うためのさらに短いより効率的な方法はありますか?
はいの場合、メソッドが JOIN とも互換性があることが望ましいです。