2015-09-07 55 views
0

在SQL-Server 2008中我该如何实现以下目标 -的if-else在where子句中的SQL服务器

select * from student 
where 
(
    (if studentId is not null then studentId='x') 
    else 
    (firstName='abc' and age > 26) 
) 

我想避免重写整个SELECT子句的任何条件分开。

回答

2

你可以简单地在你的WHERE子句中使用的OR

SELECT * 
FROM student 
WHERE 
    studentId = 'x' 
    OR (firstname = 'abc' AND age > 26) 
+1

我想你需要为OR的第二部分添加一个显式的'AND studentId为null'(假设我正确地阅读这个问题,括号看起来有点奇怪),但是,是的,这是ans WER。 –

+0

@lc。 - 不,不需要。 UPD:对不起,同意 - 在这个特别的措词你是正确的。 –

+0

@RogerWolf这取决于你如何阅读问题中的“else” –