arrays - 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 无效
如何解析这些数据?
解决方案
您需要对临时表使用交叉应用
这是一个工作示例,因此您可以看到它是如何工作的:
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
推荐阅读
- firebase - Firebase 错误:TOO_MANY_TRIGGERS
- ios - 如何根据其内容更新 TableView 及其父 ScrollView 高度
- python - How do I get the face_recognition encoding from many images in a directory and store them in a CSV File?
- laravel - 更新行时无法创建通知
- c++ - 在用户回调期间遇到未处理的异常
- jquery - 菜单仅在一页上不可点击
- computer-science - 根据此代码,这种语言是类型化语言还是非类型化语言?
- recursion - 使用记忆化将递归公式转换为伪代码
- php - 浏览器执行一些 PHP 文件,为什么?
- docker - docker system df 中显示的“RECLAIMABLE”空间是什么?