首页 > 解决方案 > SQL Server 中的 STRING_SPLIT 参数无效

问题描述

我正在尝试解析数据类型为 nvarchar(max) 的单元格,就像 SQL Server 2017 中的 csv 一样。我希望为STRING_SPLIT类似数组的字符串中的每个值使用返回一行数据。但是,当我运行以下代码时,出现错误。

select this_column
into #t
from that_table
where coordinate_x = 1
and coordinate_y = 7

select * from STRING_SPLIT(#t.this_column, ',')

消息 4104,级别 16,状态 1,第 16 行
无法绑定多部分标识符“#t.this_column”
消息 8116,级别 16,状态 1,第 16 行
参数数据类型 void 类型对于 string_split 函数的参数 1 无效

如何解析这些数据?

标签: arrayssql-serverstringcsvsplit

解决方案


您需要对临时表使用交叉应用

这是一个工作示例,因此您可以看到它是如何工作的:

DECLARE @TestData TABLE
    (
        [TestData] NVARCHAR(MAX)
    );

INSERT INTO @TestData (
                          [TestData]
                      )
VALUES ( N'1,2,3,4,5,6,7,8,9');

SELECT [b].[value] FROM @TestData [a]
CROSS APPLY[STRING_SPLIT([a].[TestData], ',') [b];

因此,对于您的情况,只需对您已有的内容进行一些小调整,例如:

SELECT [b].[value] FROM #t a
CROSS APPLY STRING_SPLIT(a.this_column,',') b

推荐阅读