비베행성에서 SQL행성으로 워프한 Split 요원
작성일 07-06-22 17:01
페이지 정보
작성자서방님 조회 159회 댓글 0건본문
안녕하세요. 톡게시판 시삽 히딩크 입니다.
오늘은 한주를 마무리 하는 금요일 입니다. 모두들 마물 샷 잘 하시기 바랍니다..
오늘 제가 올리는 팁은 T-SQL 관련 팁 입니다....
일단 "비베행성에서 SQL행성으로 워프한 Split 요원"라고 제 맘대로 이름을 붙여 놓긴 했습니다..
"이름이 길어서 짜증나요~", "12세 마인드 갖다 버리세요~", "멀더는 어디에 있죠??", "Split 요원의 비자가 만
료됬어요"
요렇게 갱장한 피드백을 주셔도.... 이름이 바뀌는 일은 없을겁니다. ㅋㅋ
SQL행성으로 워프한 Split 요원은 특정 구분자로 구분되어 있는 스트링을 Split 함수처럼 분리해서 처리 하는
T-SQL 구문 입니다.
프로시져로 쓰셔도 무방 하고, 함수로 쓰셔도 무방 합니다.
만약에, 스트링이 "11,22,33,44,55"라면....
첫 번째 루프 = 11,22,33,44
두 번째 루프 = 22,33,44
세 번째 루프 = 33,44
네 번째 루프 = 44
이런식으로 계속 잘라내 가면서 엘리먼트를 효자손보다 확실하게 긁어냅니다.
DECLARE @STRING AS VARCHAR(50) -- 입력되는 스트링..
DECLARE @ELEMENT AS VARCHAR(10) -- 배열의 원소(?)
DECLARE @DELIMITER AS CHAR(1) -- 구분자
DECLARE @DELIMITER_PTR AS INT -- 구분자의 위치
SET @DELIMITER = ','
SET @STRING = '11,22,33,44,55'
--오리지날 스트링끝에 구분자를 하나 더 넣어 줍니다.
SET @STRING = @STRING + @DELIMITER
WHILE CHARINDEX( @DELIMITER, @STRING) > 0 BEGIN
-- n번째 엘리먼트가 끝나는 위치를 구한다.
SET @DELIMITER_PTR = CHARINDEX( @DELIMITER, @STRING )
-- n번째 엘리먼트
SET @ELEMENT = SUBSTRING( @STRING, 1 , @DELIMITER_PTR - 1 )
-- n번째 엘리먼트 삭제..
SET @STRING = SUBSTRING( @STRING, @DELIMITER_PTR + 1, LEN( @STRING ) - @DELIMITER_PTR )
-- 여기서 각각의 엘리먼트를 처리 합니다.
SELECT @ELEMENT
END
진실은 쿼리분석기 너머에........
출처 : http://taeyo.net/threadboard/Content.asp?table=Board_Knowhow&seqs=1092
댓글목록
등록된 댓글이 없습니다.