http://www.sqlfiddle.com/#!6/be964/5
我期待两个结果。
如果table包含产品密钥,例如'x',则需要获取它们。 除此以外;如果table不包含产品密钥,例如't',则需要获取记录为空。
我尝试过如下的查询;
declare @param nvarchar(30);
set @param = 'x' -- or 't'
SELECT * FROM [Test]
WHERE
([ProductKey] = @param and [ProductKey] is not null)
or
([ProductKey] <>@param and [ProductKey] is null)
但它不起作用。
答案 0 :(得分:4)
你的选择中的where子句按行进行。如果我没有弄错的话,如果没有匹配的产品密钥,你只需要productkey is null
部分。我建议你使用exists函数。所以当你的表中存在productkey时,它会使用它,或者当它不使用null时:
declare @param varchar;
set @param = 'x' -- or 't'
SELECT * FROM [Test]
WHERE ([ProductKey] = @param)
or ([ProductKey] is null
and not exists (select * from [Test] where [ProductKey] = @param))