2014-04-03 55 views
38

我最近才了解SQL Server 2012中IIF函数的可用性。我总是在我的查询中使用嵌套CASE。我想知道IIF语句的确切目的以及何时应该在查询中更喜欢使用IIF over CASE语句。 我主要在我的查询中使用嵌套的CASE。SQL Server IIF与CASE

感谢您的所有投入。

+3

IIF只是一个简单的CASE语句的简写。它甚至被翻译成查询优化和执行的一个case语句:http://technet.microsoft.com/en-us/library/hh213574.aspx –

+0

这是一个遗憾,速记不是标准的一部分(它是什么这些日子?ANSISQL?),因为它更容易阅读。但随后T-SQL一直有点......“罗嗦”。 –

回答

72

IIFCASE WHEN <Condition> THEN <true part> ELSE <false part> END相同。查询计划将是相同的。这也许是最初实施的“语法糖”。

CASE可跨所有SQL平台移植,而IIF则是SQL SERVER 2012+特定的。

+1

可能使Access/VB开发人员更容易记住语法。 – GibralterTop

7

IIF是一个非标准的T-SQL函数。它被添加到SQL SERVER 2012中,以便Access可以迁移到SQL Server,而无需事先将IIF重构为CASE。一旦Access数据库完全迁移到SQL Server中,您可以重构。

+2

我喜欢你的推理。你能引用一些文档来支持它吗? –