我在sql server 2008中有一个查询.我想要从下拉列表中传递一个值或者IS NOT NULL(所以它显示所有的值).处理这个问题的最佳方法是什么?我知道你不能将字符串"IS NOT NULL"传递给参数.我有点卡在这个上面.
ASP.NET 3.5和SQL Server 2008.
假设这是一个存储过程,假设您的参数被调用@Param1,请将参数设置NULL为指示IS NOT NULL,如下所示:
SELECT ...
FROM ...
WHERE (
(@Param1 IS NULL AND field1 IS NOT NULL)
OR (field1 = @Param1)
)
Run Code Online (Sandbox Code Playgroud)
ISNULL(@Param1, field1) = field1使用以下测试:
DECLARE @test1 nvarchar(10) = 'testing',
@test2 nvarchar(10) = NULL; -- or 'random' or 'testing'
SELECT 1
WHERE ISNULL(@test2, @test1) = @test1;
Run Code Online (Sandbox Code Playgroud)
对于每种情况,计算显示为1.这似乎是比我原来的答案更好的解决方案.