2011-03-03 97 views
1

您好我想知道如果我可以的,如果在下面的查询语句中使用..我可以在此查询中使用IF语句吗?

select * from Table 
Where Field1 = 'john' and 
if Field2 = 'Mike' 
Then(dbo.StateId(gp.SiD) Like '%' + @StateName +'%')) 
Else Nothing** 

感谢

+0

是的,你可以使用,在SQL查询,但是查询的语法statments可以依赖的数据库(MySQL和甲骨文,...)。 – ssoler 2011-03-03 15:24:20

+0

@ssoler - 我认为是SQL服务器(来自'dbo.') – 2011-03-03 15:25:26

回答

2

号工作

SELECT * 
FROM Table 
WHERE Field1 = 'john' 
     AND (Field2 <> 'Mike' 
       OR dbo.StateId(gp.SiD) LIKE '%' + @StateName + '%') 

(您的示例代码不会向我明确什么应该h澳鹏如果Field2NULL

+0

正确答案是'yes'。虽然你指出这是没有必要的。 – mellamokb 2011-03-03 15:27:24

+0

@mellamokb - 不是在SQL Server中,它不是。 'IF'是一个控制结构流,不能用于查询。 – 2011-03-03 15:29:50

+0

我认为@ ssoler的评论更有帮助......从技术上讲,你不能使用确切的'IF'语法,但是你可以在SQL查询中使用这个概念。 – mellamokb 2011-03-03 16:06:11

0
select * 
    from Table 
    Where Field1 = 'john' 
    and case when Field2 = 'Mike' 
      Then (dbo.StateId(gp.SiD) Like '%' + @StateName +'%')) 
      Else (true or false based on inclusion) end 
相关问题