2013-07-17 2 views
0

나는이에 대한 SQL이 알고열 조합

샘플 테이블 :

ID FirstName LastName 
1 Jones  Smith 
2 Paul  Tabunjong 
3 John  Parks 

SQL 결과 :

ID Name 
1 Jones Smith 
2 Paul Tabunjong 
3 John Parks 

지금, 그것의 역을 가질 수 있습니다? 이 같은 :

샘플 테이블 :

ID Name 
1 Jones Smith 
2 Paul Tabunjong 
3 John Parks 

SQL 결과 :

ID FirstName LastName 
1 Jones  Smith 
2 Paul  Tabunjong 
3 John  Parks 

또 다른 하나

샘플 테이블 : :

이 같은 것을 가질 수 있습니다
ID CorporateNames 
1 Jones Smith; Anna Tomson; Tonny Parker 
2 Paul Tabunjong; Poncho Pilato 
3 John Parks; Berto Taborjakol 

SQL 결과 :

ID FirstName LastName 
1 Jones  Smith 
1 Anna  Tomson 
1 Tonny  Parker 
2 Paul  Tabunjong 
2 Poncho  Pilato 
3 John  Parks 
3 Berto  Taborjakol 
+1

방법'딕 반 다이크를 처리하기 위해, 안나 소피 Smith' – bummi

+1

END_LINK하면 관심있는 구분 기호를 사용하여 이름을 따로 분리해야 할 것이다. 당신은 구획자를 필요로합니다. 이것 좀 봐 http://stackoverflow.com/questions/2647/split-string-in-sql – dseibert

+0

[SQL 분할 함수] 가능한 중복 (http://stackoverflow.com/questions/2872358/sql-split-function) – Zzz

답변

0

예, 분할 함수를 작성하고 데이터를 구문 분석하는 데 사용할 수 있습니다. 다음은 SUBSTRING() 함수를 사용하여 샘플 분할 기능은 다음과 같습니다

CREATE FUNCTION dbo.Split 
(
    @RowData nvarchar(2000), 
    @SplitOn nvarchar(5) 
) 
RETURNS @RtnValue table 
(
    Id int identity(1,1), 
    Data nvarchar(100) 
) 
AS 
BEGIN 
    Declare @Cnt int 
    Set @Cnt = 1 

    While (Charindex(@SplitOn,@RowData)>0) 
    Begin 
     Insert Into @RtnValue (data) 
     Select 
      Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1))) 

     Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData)) 
     Set @Cnt = @Cnt + 1 
    End 

    Insert Into @RtnValue (data) 
    Select Data = ltrim(rtrim(@RowData)) 

    Return 
END