基于参数的可选“ IS NULL” WHERE子句

时间:2018-10-03 06:29:20

标签: sql-server tsql

我有一个带有WHERE子句的查询

WHERE [column1] = 'some value'
AND [column2] IS NULL

我想根据参数使IS NULL部分为可选。

例如,如果提供了param1的值,则应忽略WHERE子句的这一部分。

AND [column2] IS NULL

编辑:

我不愿意使用动态SQL,因为它会超出我这样做的目的。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

House

如果设置了@ param1,则第二个条件将始终为true,否则,它将检查[column2]是否为空

答案 1 :(得分:0)

您可以简单地执行此操作。此外,您也可以使用IsNull()

WHERE ((@param1 IS NULL OR @param1 = '') and [column1] = 'some value' and [column2] IS NULL)
OR (@param1 IS not NULL and [column1] = 'some value');

答案 2 :(得分:0)

这应该有效:

WHERE (ISNULL('some value', '') = '' OR column1 = 'some value') 
AND (ISNULL('some value', '') = '' OR column2 = 'some value')