そのため、さまざまな列で動的検索を実行してデータをフィルタリングするストアド プロシージャを使用できる方法を研究しようとしていますが、WHERE IN に似た機能、つまり、列ごとに複数の入力基準を取得する機能を備えています。
では、FN、LN、DOB の 3 つの列があるとします。各列に複数の値を持つ 3 つの変数の任意の組み合わせに値を提供できるストアド プロシージャが必要です。
例: FN IN ('ADAM', 'BRIAN') OR LN IN ('SMITH') OR DOB が指定されていません。
これに従おうとしていたのですが、
SELECT
FN,
LN
FROM TestData
WHERE
(CASE
WHEN @FN IS NULL THEN 'True'
ELSE FN
END) = (CASE
WHEN @FN IS NULL THEN 'True'
ELSE @FN
END)
AND (CASE
WHEN @LN IS NULL THEN 'True'
ELSE LN
END) = (CASE
WHEN @LN IS NULL THEN 'True'
ELSE @LN
END)
AND (CASE
WHEN @DOB IS NULL THEN '1/1/0001'
ELSE DOB
END) = (CASE
WHEN @DOB IS NULL THEN '1/1/0001'
ELSE @DOB
END)