首页 > 解决方案 > 如何在 SQL Server 2019 中使用拆分字符串获取值

问题描述

我在下面的列中有值(空格分隔的字符串)

1 4 7 5
4 5
1 4
1 3 4 

我只需要1是3次,3是1次,4是4次,5是2次,7是1次。

如下所示:

Value| count
-----+-------
 1   |   3 
 3   |   1 
 4   |   4 
 5   |   2 
 7   |   1 

我试过这样:

SELECT value  
FROM [dbo].tbl  
CROSS APPLY STRING_SPLIT((SELECT DisCode FROM tbl), ' ');

但我得到一个错误

无效的对象名称“STRING_SPLIT”

我试过: String_split 函数在 SQL Server 2019 中没有拆分分隔符, 但没有得到任何解决方案。

有人问最低兼容级别,但我不可能按服务器级别降级,因为它是一个正在运行的在线服务器。('STRING_SPLIT'不是公认的内置函数名称

请给我一个可能的解决方案。

标签: sqlsql-serversql-server-2019

解决方案


STRING_SPLIT()从 SQL Server 2016 开始可用,这意味着它需要兼容级别 130 或更高(请参阅文档)。

在 SQL Server 2019 上运行的数据库可以运行各种兼容级别,甚至低于 130。您可以使用以下命令检查数据库的兼容性级别:

SELECT compatibility_level  
FROM sys.databases
WHERE name = db_name();

如果小于 130,那么您将无法访问该功能,除非您更改兼容性或创建具有更高兼容性级别的新数据库。


推荐阅读