我在sql server 2008中有一个查询。我想要从下拉列表中传递一个值或者IS NOT NULL(所以它显示所有的值)。处理这个问题的最佳方法是什么?我知道你不能将字符串“IS NOT NULL”传递给参数。我有点卡在这个上面。
ASP.NET 3.5和SQL Server 2008。
答案 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
设置为%
。但是你必须逃避%
。