私は、ユーザーがフォーラム内のユーザーを性別、年齢、言語、ユーザーの興味によって検索できるシステムを構築しています。
私はこのストアドプロシージャを持っています:
ALTER PROCEDURE dbo.FindFriends
(
@language int,
@country nvarchar(50),
@sex int,
@ageFrom int,
@ageTo int,
@category nvarchar(50)
)
AS
SELECT u.*, cat.*
FROM [User] AS u
INNER JOIN categories AS cat ON u.user_id=cat.user_id
WHERE (age_presenentation BETWEEN @ageFrom AND @ageTo) AND lingo=@language AND sex=@sex AND cat.category_name=@category
この声明は私が欲しいものです。ただし、ユーザーが一部のフィールドに入力できない場合があります。たとえば、ユーザーがカテゴリのみでユーザーを検索する場合があります。これにより、「And」演算子を使用しているため、ユーザーは表示されません。ロジックを組み合わせて、SQL変数(@ category、@ angeToなど)のいずれかが空として指定された場合、ステートメントにそれらが含まれないようにする方法はありますか?