Azure Synapse Analytics 专用 SQL 池 - IIF 语句不起作用

Posted

技术标签:

【中文标题】Azure Synapse Analytics 专用 SQL 池 - IIF 语句不起作用【英文标题】:Azure Synapse Analytics Dedicated SQL pool - IIF statement is not working 【发布时间】:2021-10-19 23:23:41 【问题描述】:

尝试在 SELECT 语句中使用 IIF() 并收到错误“Incorrect syntax near '>'。” Azure Synapse Analytics 专用 SQL 池

尝试如下:

SELECT IIF(1>2, 'YES', 'NO');

这个错误让我相信 IIF 语句在 Azure Synapse Analytics 专用 SQL 池中根本不起作用。

知道,CASE 是替代方案,但想知道在 Synapse 专用 SQL 池中 IIF 无法正常工作的背后是否有任何具体原因?

任何有关这方面的诀窍或知识分享都将不胜感激!

【问题讨论】:

明确指出 Synapse Analytics 不支持此运算符:“Azure Synapse Analytics 专用 SQL 池不支持 IIF。” => docs.microsoft.com/en-us/sql/t-sql/functions/…. CASE 是标准 SQL。 IIF() 是定制的 SQL。我建议你使用标准 SQL 的方法。 【参考方案1】:

正如 Jaime Drq 在评论中提到的,目前,Azure Synapse Analytics 专用 SQL 池不支持 IIF这是在反馈/单独讨论级别

所以在微软技术社区的讨论中提出了同样的要求。希望 Azure Synapse Analytics 团队在不久的将来实施这个简单的插件。

如果您还希望它出现在 Azure Synapse Analytics 专用 SQL 池中,请让社区知道这件事并在 Microsoft 的技术社区中点赞 - https://techcommunity.microsoft.com/t5/azure-synapse-analytics/azure-synapse-analytics-dedicated-sql-pool-iif-statement-support/m-p/2659481#M16

【讨论】:

【参考方案2】:

根据the documentation,目前专用 SQL 池不支持 IIF。使用 CASE 语句的等效语句是:

SELECT CASE WHEN 1 > 2 THEN 'YES' ELSE 'NO' END;

IIF 目前由无服务器 SQL 池提供:

【讨论】:

以上是关于Azure Synapse Analytics 专用 SQL 池 - IIF 语句不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Azure Synapse Analytics监控行组跳转。

从 Node.js 函数访问 Azure Synapse Analytics

无法在 Azure Synapse Analytics 中创建表

从 Azure Synapse Analytics Spark Pool 连接到 Azure SQL 数据库

Azure 数据资源管理器与 Azure Synapse Analytics(又名 SQL DW)

Azure Synapse Analytics 是不是支持 R 语言?