在SQL-Server中等效于double equals?

时间:2016-10-28 13:01:56

标签: sql-server

我正在尝试编写更复杂的SQL-Server CASE语句:

...
and (@StatusID is null or
       (case 
           when @StatusID = 0 and sr.Comment is not null
           else @StatusID == sr.StatusID
       end) 
     = 1)
and ...

但是我得到了一个双等号的错误。我也试过这个

else @StatusID = sr.StatusID then 1 

else @StatusID is sr.StatusID

我无法在SQL-Server上找到有关我想要做的事情的任何信息。

3 个答案:

答案 0 :(得分:4)

你可能正在寻找这个

and (@StatusID is null or 1 =
   (CASE 
       WHEN @StatusID = 0 AND sr.Comment IS NOT NULL THEN 1
       WHEN @StatusID = sr.StatusID THEN 1
   end) 
 )

答案 1 :(得分:0)

CASE WHEN <EXPRESSION> THEN ... ELSE ... END 是你想要的语法。你刚刚忘记了THEN。此外,单个等号是正确的SQL语法。

答案 2 :(得分:-1)

This question and answer可能会对您有所帮助。

实现这种比较的一种方法是将double转换为字符串并进行比较,例如:

-- select ids (double) that start with '1' by casting them to varchar and using LIKE

SELECT * FROM MyTable WHERE CAST(Id AS VARCHAR) LIKE '1%';