我正在尝试解析数据类型为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无效
如何解析此数据?
答案 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;