以下是我正在尝试的操作。使用列分割字符串连接表的SQL查询
我有这些:
表1:
Name | Surname | Age | Location | ContactPeopleIds
John | Cobaing | 25 | Turkey | 1234,1512,1661, 2366,
Jack | Maltean | 29 | Italy | 6155,2333,1633,
表2:
ID | Name | LastName | Location
1234 | Meg | Ryan | US
1512 | Jesy | Jade | US
1661 | John | Kradel | US
2366 | Jack | Abdona | Nigeria
TableIWant
Name | Surname | Age | Location | ContactPeopleNames
John | Cobaing | 25 | Turkey | Meg Ryan, Jesy Jade, John Kradel, Jack Abdona
我发现叫fn_ParseText2Table分路器功能(数据,splitter),它使用splitter char分割数据创建一个表。 (参考here)
例如:
select *
from dbo.fn_ParseText2Table('1234,1512,1661,2366', ',')
功能产生:
int_value | num_value | txt_value
null | null | 1234
null | null | 1512
null | null | 1661
null | null | 2366
但是使用这个我不能创建一个查询。我不确定使用t-sql或不。 我试过使用公用表表达式,但无法管理。
如果您可以提供多种解决方案,那么提供有关其性能价值差异的详细信息会非常客气。
您应该有一个联结表,而不是逗号分隔的“ContactPeopleIds”列表,然后您可以强制FK约束并消除拆分它们的需要。 –
你有设计问题 http://en.wikipedia.org/wiki/First_normal_form#Repeating_groups_within_columns – pleasedontbelong
是的,我知道..这不是我想要做的设计。但这是我必须处理的):任何帮助,将不胜感激。 –