SQL Server IIF 与 CASE
Posted
技术标签:
【中文标题】SQL Server IIF 与 CASE【英文标题】:SQL Server IIF vs CASE 【发布时间】:2014-05-15 09:03:23 【问题描述】:我最近了解了 SQL Server 2012 中 IIF
函数的可用性。我总是在查询中使用嵌套的 CASE
。我想知道IIF
语句的确切用途,以及我们何时应该更喜欢在查询中使用IIF
而不是CASE
语句。
我在查询中主要使用嵌套的CASE
。
感谢所有输入。
【问题讨论】:
IIF 只是简单 CASE 语句的简写。它甚至被翻译成用于查询优化和执行的case语句:technet.microsoft.com/en-us/library/hh213574.aspx 很遗憾,速记不是标准的一部分(现在是什么?ANSISQL?),因为它更容易阅读。但是后来T-SQL一直有点……“罗嗦”。 【参考方案1】:IIF
与CASE WHEN <Condition> THEN <true part> ELSE <false part> END
相同。查询计划将是相同的。它可能是最初实现的“语法糖”。
CASE 可跨所有 SQL 平台移植,而 IIF 是 SQL SERVER 2012+ 特定的。
【讨论】:
可能是为了让 Access/VB 开发人员更容易记住语法。【参考方案2】:IIF 是一个非标准的 T-SQL 函数。它被添加到 SQL SERVER 2012,以便 Access 可以迁移到 SQL Server,而无需事先将 IIF 重构为 CASE。一旦 Access db 完全迁移到 SQL Server 中,您就可以重构了。
【讨论】:
我喜欢你的推理。你能引用一些文档来支持它吗?以上是关于SQL Server IIF 与 CASE的主要内容,如果未能解决你的问题,请参考以下文章