答案 0 :(得分:0)
假设sql-server
大于或等于2016
版本。然后,可以使用string_split()
函数:
select spl.u_id, s.name us_uid, s.age col_1, s.dob col_2, s.education col_3, s.department col_4 from @source s
cross apply( select value u_id from string_split( (select u_id from @source s2 where s2.u_id = s.u_id ),',')
where CHARINDEX(value,s.u_id,1) > 0) spl
答案 1 :(得分:0)
解决上述问题的最佳方式是
选择值作为UID,名称,年龄,教育程度,部门
来自StackSoln
交叉应用string_split(UID,',')*
STRING_SPLIT
一个表值函数,根据指定的分隔符将一个字符串分成多个子字符串行。
交叉申请
仅返回外部表中的行,这些行从表值函数生成结果集。换句话说,CROSS APPLY的结果不包含左侧表表达式的任何行,而从右侧表表达式无法获得任何结果。交叉应用逐行INNER JOIN