0

これは、日常的に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'

4

2 に答える 2