비베행성에서 SQL행성으로 워프한 Split 요원 > db

본문 바로가기

db

비베행성에서 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

댓글목록

등록된 댓글이 없습니다.

전체 464건 23 페이지
게시물 검색
Copyright © 서방님.kr All rights reserved.
PC 버전으로 보기