2014-06-17 2 views
1

두 테이블이 있는데 첫 번째 테이블 인 dbo.QuestionaireResponse에는 PersonID (int not null), ApplicationID (int not null) 및 RaceID가 포함됩니다. PersonID는 기본 ID 열이지만 RaceID는 ID가 쉼표로 구분 된 문자열을 포함하는 varchar (255)입니다 (내가 아는 잘못된 디자인). 다른 테이블은 두 개의 열, RaceID (int identity) 및 RaceDescription (varchar 일종의)이있는 유형 테이블 dbo.Race입니다.전체 열의 테이블로 문자열 나누기

  1. PersonID, RaceDescription 한 같은
  2. PersonID, RaceDescriptions (경주 설명 collumn의 값의 쉼표로 구분 된 문자열) 관계에 많은에
  3. : 나는 다음과 같은 두 가지 형식 중 하나로 출력 테이블이 필요

내 연구에서 나는이 게시물 http://ole.michelsen.dk/blog/split-string-to-table-using-transact-sql/에 걸쳐 왔지만 분할이 열에있는 모든 레코드에 대해 수행되어야하기 때문에 문제가되지는 않습니다.

데이터 이외에 웹 서비스에 형식 테이블을 전달하는 결과가 발생했지만 다른 가능한 솔루션이 있는지 궁금합니다. 유형 테이블에 적은 수 또는 레코드가 있지만 성능은이 경우 중요합니다.

SQL Server에서이 작업을 수행하는 방법에 대한 제안이 있으십니까?

답변

1

이 시도 :

SELECT q.PersonID, r.RaceDescription 
FROM dbo.QuestionaireResponse q JOIN dbo.Race r 
ON ',' + q.RaceIDs + ',' LIKE '%,' + CONVERT(varchar(10),r.RaceID) + ',%'; 

SQL Fiddle