2011. 10. 18. 13:34
반응형
list 페이지에 1:N으로 묶인 테이블의 데이터를 가져와야 될때.. 보통 , 식으로 해서 가져오는 경우가 꾀 있다.
이런경우 사용..

출처 : http://akddd.net/224
SELECT DISTINCT
       ID,
 type,
       STUFF((
             SELECT ',' + USER_NAME
             FROM    group b
             WHERE   b.id = a.id
   AND    b.type = a.type
             FOR XML PATH('')
        ), 1, 1, '') AS user_name
 FROM group a
WHERE id = '1'



이것을 split 하는 함수
출처 : http://cafu.tistory.com/38

CREATE FUNCTION FN_SPLIT
(
    @StrValue VARCHAR(1000),  
-- 분리할 문자열
    @SplitChar VARCHAR(1)        
-- 구분할 문자
)
RETURNS @SPLIT_TEMP TABLE  ( VALUE VARCHAR(50) )
AS
BEGIN  
 
    DECLARE @oPos INT, @nPos INT
    DECLARE @TmpVar VARCHAR(1000) -- 분리된 문자열 임시 저장변수

 

    SET @oPos = 1 -- 구분문자 검색을 시작할 위치
    SET @nPos = 1 -- 구분문자 위치

 

    WHILE (@nPos > 0)
    BEGIN

        SET @nPos = CHARINDEX(@SplitChar, @StrValue, @oPos )


        IF @nPos = 0
            SET @TmpVar = RIGHT(@StrValue, LEN(@StrValue)-@oPos+1 )
        ELSE
            SET @TmpVar = SUBSTRING(@StrValue, @oPos, @nPos-@oPos)

 

        IF LEN(@TmpVar)>0
            INSERT INTO @SPLIT_TEMP VALUES( @TmpVar )


        SET @oPos = @nPos +1
    END


   RETURN
END

반응형

'Db > Mssql' 카테고리의 다른 글

mssql과 oracle 함수 비교  (1) 2011.10.28
mssql function sample  (1) 2011.10.28
mssql procedure while, if sample  (3) 2011.10.28
MSSQL Getdate 날짜포멧  (2) 2011.10.18
mssql insert시 IDENTITY_INSERT 오류  (1) 2011.09.28
Posted by seongsland