SQL Server中无效的STRING_SPLIT参数

时间:2018-12-14 16:00:02

标签: arrays sql-server string csv 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无效

如何解析此数据?

2 个答案:

答案 0 :(得分:3)

您将要在临时表中使用交叉应用

这是一个有效的示例,因此您可以了解其工作原理:

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

答案 1 :(得分:3)

您无法将表传递给内联表函数,需要将其包括在FROM中:

SELECT {YourColumns}
FROM #t T
     CROSS APPLY STRING_SPLIT(T.this_column, ',') SS;