通过sql参数传递IS NOT NULL

时间:2010-09-27 14:19:52

标签: asp.net sql

我在sql server 2008中有一个查询。我想要从下拉列表中传递一个值或者IS NOT NULL(所以它显示所有的值)。处理这个问题的最佳方法是什么?我知道你不能将字符串“IS NOT NULL”传递给参数。我有点卡在这个上面。

ASP.NET 3.5和SQL Server 2008。

2 个答案:

答案 0 :(得分:5)

假设这是一个存储过程,假设您的参数名为@Param1,请将参数设置为NULL以指示IS NOT NULL,如下所示:

SELECT ...
FROM   ...
WHERE  (
           (@Param1 IS NULL AND field1 IS NOT NULL)
           OR (field1 = @Param1)
       )

<小时/> GSerg建议

使用以下内容测试ISNULL(@Param1, field1) = field1

DECLARE  @test1 nvarchar(10) = 'testing',
         @test2 nvarchar(10) = NULL; -- or 'random' or 'testing'

SELECT   1
WHERE    ISNULL(@test2, @test1) = @test1;

每种情况的计算显示为1。这似乎比我原来的答案更好。

答案 1 :(得分:1)

您可以使用like运算符:

select * from table1 where name like @param
如果您不想使用空值,请将@param设置为%。但是你必须逃避%