STUFF(Transact-SQL)

DataBase 2010. 10. 20. 17:47
2008/02/01 01:00
[DB]

지정한 시작 지점에서 지정한 문자 길이를 삭제한 다음 다른 문자 집합을 삽입합니다.

Transact-SQL 구문 표기 규칙

구문

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 지원되는 문자 데이터 형식 하나인 경우 문자 데이터를 반환합니다. character_expression 지원되는 이진 데이터 형식 하나인 경우 이진 데이터를 반환합니다.

위내용은 MSDN에 나와있는 내용입니다.

select stuff(문자열,시작인덱스,삭제사이즈,추가문자열)

위 문자을 보시면 첫번째 파라메타는 변경하고자하는 문자열입니다.
두번째 파라메타는 삭제및 추가를 위한 인덱스가 되겠죠( 참고로 mssql에서는 시작인덱스는 1입니다.)
세번째 파라메타는 시작인덱스를 기준으로 삭제될 문자열의 길이가 됩니다.
네번째 파라메타는 삭제가된 위치에 추가할 문자열이 됩니다.

이내용을 가지고 몇가지 예제를 만들어 보겠습니다. 역시 예제가 있어야 이해하기가 쉽죠^^

select
stuff('123456',2,3,'a')
--결과 : 1a56

select
stuff(null,2,3,'a')
--결과 : null

select
stuff('',2,3,'a')
--결과 : null

select
stuff('1',2,3,'a')
--결과 : null

select
stuff('12',2,3,'a')
--결과 : 1a

예제를 보시면 알겠지만 변경하고자 하는 문자열의 길이가 시작인덱스보다 작으면 NULL이 반환됩니다.
변경하고자하는 문자열이 NULL이면 당연히 NULL이 나오겠죠? ^^

원문MSDN 가기

'DataBase' 카테고리의 다른 글

MS SQL 시작 명령어  (0) 2011.08.29
MS SQL 명령어 모음  (0) 2011.08.29
Microsoft SQL Server 2008  (0) 2009.01.07
DBCC CHECKDB 수행 후 트랜잭션 로그 축소 실패  (0) 2009.01.07
Microsoft SQL Server 2008 Enterprise ENG  (0) 2009.01.07
Posted by 퓨전마법사
,