SQL Case语句可以通过吗?

nor*_*ndo 11 sql-server case-statement

有没有办法在SQL中使CASE语句像C#中的case语句一样?我不想做的是下面的例子,但如果那是我唯一的选择,我想我会选择它.

例:

@NewValue =
   CASE
      WHEN @MyValue = '1' THEN CAST(@MyValue AS int)
      WHEN @MyValue = '2' THEN CAST(@MyValue AS int)
      ELSE NULL
   END
Run Code Online (Sandbox Code Playgroud)

编辑:

我正在使用SQL Server.

Mar*_*ers 11

回答你的具体问题:不,它不能.

例如,请参阅CASEMySQL文档.每个人都WHEN必须拥有THEN result,而且没有办法解决这个问题.在THEN没有标记为可选.这同样适用于我使用过的所有其他RDBMS.

这是另一个例子:Sql Server的CASE表达式

你已经有了一个很好的替代方式来发布评论,所以我不会在这里重复.


Jos*_*ama 5

你也可以这样做:

@NewValue =
   CASE
      WHEN @MyValue in ( '1', '2' ) THEN CAST(@MyValue AS int)
      ELSE NULL
   END
Run Code Online (Sandbox Code Playgroud)

或者像这样:

CASE @MyValue 
         WHEN '1' THEN CAST(@MyValue AS int)
         WHEN '2' THEN CAST(@MyValue AS int)
         ELSE null
      END
Run Code Online (Sandbox Code Playgroud)

即使在这种情况下,@MyValue in ('1','2')这将更有意义.