SQL Server使用UNION和STRING_SPLIT时报子查询返回多值错误如何解决
错误原因
STRING_SPLIT 函数的第一个输入参数只接受单个字符串,你写的子查询在表内有多条数据时会返回多个值,不符合入参要求,因此触发报错。
修正后的查询代码
DECLARE @testTable TABLE ( ID smallint, ACode varchar(64) ) INSERT INTO @testTable SELECT 1, 'A1,B2' UNION ALL SELECT 2, 'C1,D2' SELECT s.[value] As ACode FROM @testTable t CROSS APPLY STRING_SPLIT(t.ACode, ',') s
实现逻辑说明
CROSS APPLY 会对 @testTable 中的每一行数据单独调用一次 STRING_SPLIT 函数,拆分当前行的 ACode 字段值,所有拆分后的结果会自动合并输出,最终返回的就是你预期的4条拆分后的数据:A1、B2、C1、D2。
内容的提问来源于stack exchange,提问作者Amelia
相关产品推荐
相关产品推荐

