SQL Server中的IIF与CASE对比

109

我最近了解到SQL Server 2012中有 IIF 函数。我通常在查询中使用嵌套的 CASE。我想知道 IIF 语句的确切目的,以及何时应该优先使用 IIF 而不是 CASE 语句。

感谢所有输入。


9
IIF只是一个简单CASE语句的缩写。为了查询优化和执行,它甚至被翻译成CASE语句:http://technet.microsoft.com/en-us/library/hh213574.aspx - Sam DeHaan
2
很遗憾,速记符号不是标准的一部分(现在是什么?ANSISQL?),因为它更容易阅读。但是T-SQL一直有点“啰嗦”。 - Neil Barnwell
2个回答

172

IIFCASE WHEN <条件> THEN <真值部分> ELSE <假值部分> END相同。查询计划也相同。它可能是最初实现时的“语法糖”。

CASE在所有SQL平台上都可移植,而IIF仅适用于SQL SERVER 2012+。


6
可能是为了方便Access/VB开发者记忆语法。 - interesting-name-here

25

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


15
我喜欢你的推理。你能引用一些文献来支持它吗? - Peter Ivan
1
为什么这个答案需要引用而另一个不需要呢?这是对匿名用户的歧视 :D - GôTô

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接