STRING_AGG 兼容级别 < 140

STRING_AGG working on compatibility level < 140

我了解 STRING_AGG 是在兼容级别 140 的 SQL Server 2017 中引入的。

预期的行为是在 2016 或更低版本上 运行 时收到错误消息 'string_agg' is not a recognized built-in function

当我在本地 SQL 服务器 (2016) 上 运行 时出错。但是,当我 运行 在 Azure SQL 上时,即使将兼容级别降低到 130 甚至 110 也没有给出任何错误,它仍然可以正常执行。

A​​zure SQL 中的 compatibility_level 行为是否发生了变化?比如,新旧 syntax/code/features 都可以吗?

此行为 documented 在备注部分的最后一行:

STRING_AGG is available in any compatibility level.

这意味着如果您是 运行 支持 string_agg -

的 SQL 服务器版本
  • SQL 服务器 2017(或更高版本)
  • Azure SQL 数据库
  • Azure 突触分析(SQL DW)

无论为您正在使用的特定数据库设置的兼容性级别如何,string_agg 内置函数都可以工作。