SPを持っています
ALTER PROCEDURE dbo.sp_Compare
@lst varchar(100),
@frst varchar(100) = NULL,
@passportNo varchar(50) = NULL
AS
SELECT * FROM dbo.User
WHERE LastName like '%' + @lst + '%'
AND (
FirstName like @frst + ' %'
OR FirstName like '% ' + @frst + ' %'
OR FirstName like '% ' + @frst
OR FirstName = @frst
)
OR Passport = @passportNo;
場合によっては@frs
、または@passportNo
その両方の詳細が利用できない場合があります
したがって、上記のクエリを変更して、オプションのパラメーターが渡されない場合 (つまり、その値が null の場合)、そのパラメーターがその特定の列でのフィルタリングと見なされないようにします。
つまり、@frst
NULL の場合、結果は FirstName に基づいてフィルタリングされるべきではなくFirstName like '%' + @frst + '%'
、WHERE 句に条件がなかったかのように機能するはずです..
さまざまなケースで同じロジックを繰り返し記述せずにクエリを記述するにはどうすればよいですか?