帮助SQL Server查询条件
问题描述:
我有以下查询。但它给了我在in
条款中的错误。帮助SQL Server查询条件
declare @lastName varchar(20)
set @lastName = 'Davis'
select *
from Table1
where Date >= '2013-01-09'
and lastname in(
case
when @lastName = 'DAvis' THEN @lastName
else 'Brown','Hudson' end)
答
事情是这样的:
select *
from Table1
where
Date >= '2013-01-09' and
(
(@lastName = 'Davis' and lastname = @lastName) or
(@lastName <> 'Davis' and lastname in ('Brown','Hudson'))
)
答
如果要通过三个名字,使用的过滤结果下面的查询:
declare @lastName varchar(20)
set @lastName = 'Davis'
select * from Table1
where Date >= '2013-01-09'
and lastname in(
'DAvis' ,'Brown','Hudson')
答
有趣。我认为在这种情况下,特别是导致问题的是“布朗”,“哈德森”。你可能最好不要使用case语句。
问题是我不知道在单个情况下返回多个值的方法,所以你必须像Alex说的那样使用简单的布尔逻辑。但是,您可以在where子句中使用case语句,而不是在单个案例中返回多个值。
+0
同意。谢谢。 – Fayde 2011-06-10 04:56:02
你需要“(”和“)”围绕在争论中,不是吗? – ExCodeCowboy 2011-06-10 04:42:06
@亲爱的 - 修正。谢谢。 – 2011-06-10 04:43:50
谢谢亚历克斯。你帮我解决了这个问题。我接受了你的回答。 – Fayde 2011-06-10 04:57:29