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) -- 분리된 문자열 임시 저장변수
이런경우 사용..
출처 : 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 |