これは、日常的にSQLに取り組んでいる人々にとっては簡単に聞こえるかもしれませんが、これは私の多くの時間を費やしています. 値がnullの場合、変数値に基づいてレコードを選択する必要があるテーブルがあり、ステータス列が3に等しくない場合、変数値は変数値に基づいたnullフィルターと等しくありません..
DECLARE @status int
set @status = 1
SELECT change_set_history_id, files_changed, is_previewed
FROM dbo.ChangeSetHistory WITH (NOLOCK)
WHERE [user_name] = 'djacob' AND
[culture] = 'nl-NL' AND
(@status IS NULL AND [status] <> 3) OR (@status IS NOT NULL AND [status] = @status) AND
[approver] = null AND
is_deleted = 0
この部分のクエリで試してみるとうまくいきます DECLARE @status int set @status = 1 select * from ChangeSetHistory where status = @status and user_name = 'djacob' and culture = 'nl-NL'