2011-08-07 9 views
0
create procedure [dbo].[MySproc] 
@Value bit = null 
as 

select columna from tablea where columnb = @Value 

パラメータにnullを渡すと、これは機能しません。明らかに私が述語をcolumnbに変更するとnullです。where句のSQL NULL可能ビット

条件付きロジック(if/else)を使用せずにこれを動作させるにはどうすればよいですか?

アップデート:私はあなたが本当たいと仮定@gbn答え

where (@Value is null and columnb is null) or (columnb = @Value) 

答えて

4

に基づいてそれを考え出し1 = 1、0 = 0またはNULL = NULL

select columna from tablea 
where columnb = @Value OR (columnb IS NULL AND @Value IS NULL) 

どう0/1程度であれば列にはNULLをパラメータとして指定します。通常、これはあなたが何かを意味するためにNULLを使用しているので、あなたのロジックは意味をなさない

where columnb = ISNULL(@Value, columnb) 

「ちょうど私の行を与える」だろう...

+0

downvoteにコメントしてください... – gbn

+0

右私はそれが何かを意味するNULLを引き起こしていることを理解し、それが動作していない理由です。 Null!= Null。あなたは私にそれを解決する方法のアイデアを与えました。ありがとう。 –