featur

[mssql] STUFF (Transact-SQL) 함수 본문

개발/MSSQL

[mssql] STUFF (Transact-SQL) 함수

featur 2015. 11. 4. 11:07

STUFF(Transact-SQL)

 

 


STUFF 함수는 다른 문자열에 문자열을 삽입합니다.

이 함수는 지정된 시작 위치와 문자 수에 따라 첫 번째 문자열의 문자를 삭제하고 두 번째 문자열을 시작 위치에 삽입합니다.

 

 

구문
STUFF ( character_expression , start , length ,character_expression )


인수


character_expression
문자 데이터의 식입니다. character_expression은 문자나 이진 데이터의 열, 상수 또는 변수일 수 있습니다.

 

start
삭제 및 삽입 시작 위치를 지정하는 정수 값입니다. start 또는 length가 음수이면 Null 문자열이 반환됩니다. start가 첫 번째character_expression보다 길면 Null 문자열이 반환됩니다. start는 bigint 형식일 수 있습니다.

 

length
삭제할 문자 수를 지정하는 정수입니다. length가 첫 번째 character_expression보다 길면 마지막 character_expression의 마지막 문자까지 삭제됩니다. length는 bigint 형식일 수 있습니다.

 

 반환 형식
character_expression이 지원되는 문자 데이터 형식 중 하나이면 문자 데이터를 반환합니다. expression이 지원되는 이진 데이터 형식 중 하나이면 이진 데이터를 반환합니다.

 


주의
시작 위치 또는 길이가 음수이거나 시작 위치가 첫 번째 문자열의 길이를 넘어서면 null 문자열이 반환됩니다.

삭제할 길이가 첫 번째 문자열보다 길면 첫 번째 문자열의 첫 번째 문자까지 삭제됩니다.

결과 값이 반환 유형이 지원하는 최대값보다 크면 오류가 발생합니다.

 


 예
다음 예에서는 첫 문자열 abcdef에서 2 위치의 b부터 세 문자를 삭제하고 삭제 지점에 두 번째 문자열을 삽입하여 만든 문자열을 반환합니다.


SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO
결과 집합은 다음과 같습니다.

---------------------------------------------------------------------------------------------------------------


활용
---------------------------------------------------------------------------------------------------------------


SELECT MS.SiteInfo, MT.*
FROM MCS_TRAINING MT

           LEFT OUTER JOIN

                 (SELECT DISTINCT TRN_ID,      

                        STUFF((                 

                                SELECT ',' + SITE_ID          

                                FROM dbo.MCS_TRAINING_SITE B WHERE B.TRN_ID = A.TRN_ID     

                                FOR XML PATH('')

                              ), 1, 1, '') AS SiteInfo     

                   FROM dbo.MCS_TRAINING_SITE A) MS     

             ON MT.TRN_ID = MS.TRN_ID 

             WHERE MT.TRN_ID = 5

---------------------------------------------------------------------------------------------------------------


TRN_ID      SiteInfo
--------------------------------------------------------------------------------------------------------------- 5           C5A0_T1111,C5A0_T1112

19          Z108911

24          0006171450,0006194246

25          0002124488,0002124870,0006171450,0006194246,22462,C5A0_4024,C5A0_4047,C5A0_4048,C5A0_6536,C5A0_6543

26          0002124488,0002124871,0002124873,0002125980,0002126516,0002126857,0002127402,0003262688,0006084378,0006171450,0006194246,0006224753,0006276442,22923,C5A0_6133,C5A0_T1001,C5A0_T1002,C5A0_T4454,Z108907,Z108911

27          0002124488,0002124871,0002124873,0002125980,0002126516,0002126857,0002127402,0003262688,0006084378,0006171450,0006194246,0006224753,0006276442,22923,C5A0_6133,C5A0_T1001,C5A0_T1002,C5A0_T4454,Z108907,Z108911

28          0006084378,0006171450,0006194246,0006224753,0006276442,Z108907,Z108911

 


(7개 행 적용됨)

 


Comments