以下是我正在嘗試的操作。使用列分割字符串連接表的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
是的,我知道..這不是我想要做的設計。但這是我必須處理的):任何幫助,將不勝感激。 –