如果变量有数据,我想在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
答案 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
,CASE
,WHEN
和THEN
。 END
并非绝对必要 - 请注意,如果您不包含它,那么如果不满足ELSE
条件,则表达式将返回NULL
。
答案 2 :(得分:0)
您可以尝试以下操作:
Declare @last_name varchar(10) = null;
Select * from TABLE1
Where FirstName = 'John'
AND LastName = ISNULL(@last_name, LastName)
您也可以用COALESCE替换ISNULL。