我需要使用启用排序的STRING_SPLIT :
我们已将所有服务器升级到 SQL Server 2022 并将兼容级别更改为 160,但以下代码不起作用:
SELECT * FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ', 1);
错误是:
消息 8748,级别 16,状态 1,第 1 行 STRING_SPLIT 的 enable_ordinal 参数仅支持常量值(不支持变量或列)。
生产环境是:
Microsoft SQL Server 2022 (RTM-CU11) (KB5032679) - 16.0.4105.2 (X64)
Nov 14 2023 18:33:19
Copyright (C) 2022 Microsoft Corporation
Standard Edition (64-bit) on Windows Server 2019 Standard 10.0 <X64> (Build 17763: )
SSMS 的版本是:
我们已经在最新的 CU 上测试了代码:
我唯一找到的就是这个答案,它指出:
问题在于,SSMS 的 IntelliSense/工具提示没有基于版本的条件逻辑,并且代码领先于引擎。目前,该功能仅在 Azure SQL 数据库、托管实例和 Synapse 中可用。
不过,我不确定问题出在哪里——文档、引擎、SSMS 还是我做错了什么。
注意:Azure Data Studio 上也存在同样的问题。
您的数据库正在使用强制参数化。
SQL Server 参数化该
enable_ordinal
选项,因此出现错误:此参数应从强制参数化中排除。这是一个错误。
一种可能的解决方法是使用常量可折叠表达式:
如果
STRING_SPLIT
不可用,您将收到不同的错误:错误报告