新的STRING_SPLIT
method在我的Azure SQL数据库中不可用。我几天前已经运行ALTER DATABASE [DatabaseName] SET COMPATIBILITY_LEVEL = 130
,我已经验证兼容级别确实设置为130. SELECT database_id, name, compatibility_level FROM sys.databases
是否有其他人能够使用新方法,如果是,您是否还需要做其他任何事情才能使其正常工作?
答案 0 :(得分:38)
这是语法错误。我试图将该函数用作标量而不是表值。
更正语法:SELECT Value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
答案 1 :(得分:13)
STRING_SPLIT功能在兼容级别130或更高级别可用。如果您的数据库兼容级别低于130,SQL Server将无法找到并执行STRING_SPLIT函数。您可以使用以下命令更改数据库的兼容级别:
ALTER DATABASE DatabaseName SET COMPATIBILITY_LEVEL = 130
请注意,即使在新的Azure SQL数据库中,兼容级别120也可能是默认的。
供参考:
版本 - 最高兼容级别 - 最低可用级别
答案 2 :(得分:7)
string_split
函数必须放在FROM
子句之后。要么作为表值(如OP的回答),要么 OR 使用以下命令将列中的每个字符串都用","
分隔(贷记@padigan的注释):
select *
from infoTable
cross apply string_split(infoTable.myStrings, ',')
我不确定如何命名结果列,它采用默认名称value