仅在数据存在时添加条件

时间:2015-12-14 15:03:56

标签: sql sql-server

如果变量有数据,我想在WHERE子句中添加一个条件。

我尝试使用以下case语句,但它有语法错误。

Declare @last_name varchar(10) = null;
Select * from TABLE1 
Where FirstName = 'John'
AND CASE WHEN @last_name IS NOT NULL THEN LastName = @last_name

3 个答案:

答案 0 :(得分:5)

Select * from TABLE1 
where FirstName = 'John'
  AND (@last_name IS NULL OR LastName = @last_name)

答案 1 :(得分:0)

其他人已经发布了更好的方法来编写您要表达的逻辑,但是为了以后您需要使用CASE语法,请记住语法要求您包含单词{{ 1}}。这告诉SQL表达式的完成位置。

这是基本END表达式的样子:

CASE

任何CASE表达式必须至少包含CASE WHEN MyField = 'MyValue' THEN 'MyResult' WHEN MyField = 'MyOtherValue' THEN 'MyOtherResult' ELSE 'NoResult' END CASEWHENTHENEND并非绝对必要 - 请注意,如果您不包含它,那么如果不满足ELSE条件,则表达式将返回NULL

答案 2 :(得分:0)

您可以尝试以下操作:

Declare @last_name varchar(10) = null;
Select * from TABLE1 
Where FirstName = 'John'
AND LastName = ISNULL(@last_name, LastName)

您也可以用COALESCE替换ISNULL。