질문 글 수정합니다.
이 작업이 sp 제작 없이 그냥 쿼리문으로만 가능한지 모르겠습니다.
아무튼 어떤 식으로든 현재 게시물 본문에서 이미지 파일명과 확장자를 추출해야 하는 작업이 필요한 상태라서 이곳에 조언 구해 봅니다.
작업의 목적 :
게시판 본문을 저장하는 contents 라는 text 타입 컬럼에서 다음과 같은 태그를 찾는다.
<img .. src="/경로1/경로2/_FCKeditor/파일명.확정자" ...
이미지 태그가 있는 레코드라면 해당 레코드에서 이미지 파일명.확장자 문자열을 모두 추출해 낸다.
추출한 문자열을 idx 컬럼과 매칭하고 별도의 임시 테이블에 담아둔다.
임시테이블에 담아둔 데이터를 기반으로 asp페이지에서 서버에 업로드 된 이미지들이 누구의 게시물이냐를 판단하여
각 이미지를 해당하는 사용자 폴더에 복사시킨다.
즉 각 레코드마다 본문에 있는 모든 IMG 태그를 찾아서 이미지 파일명.확장자 값을 구하고 그것을 idx컬럼과 매칭하여 하나의 레코드로 만들어 작업을 위해 만든 임시 테이블에 저장하고자 합니다.
대부분의 이미지는 jpg 인데 간 혹 GIF나 BMP와 같은 확장자의 이미지도 존재합니다.
이미지 파일명과 확장자 값을 추출하는 쿼리나 SP만 만들어지면 이후 작업은 제가 처리할 수 있을 것 같은데 본문에서 추출하는 작업을 어떻게 해야 할지 모르겠습니다.
저는 처음에 charindex와 substring을 활용해 보려 하였으나
본문의 첫번째 IMG태그에 해당하는 이미지만 추출이 가능하더군요.
2장 이상의 이미지가 삽입된 경우 첫번째 IMG 이후에 나오는 IMG 태그의 파일은 수집할 수 가 없었습니다.
혹시 도움이 될만한 자료나 정보도 좋고 직접적인 조어도 좋습니다.
Google을 찾아보고 있는데 딱히 방법을 찾지 못해 그러니 도움 부탁드립니다.
Comment 4
-
Larry
2014.05.21 16:10
안녕하세요. 초짜해커님,
답변 감사드립니다.~
start_location 값을 활용해 반복하면서 찾는 방법이 있었군요... 감은 오는데 실질적으로 어떻게 구문을 짜야 할지 조금은 어렵네요 ㅎㅎ
혹시 간략한 구문 소스 하나 받아볼 수 있을까요? loop를 어떤식으로 돌려야 할지 걱정이라 ...
아무튼 도움 감사드립니다 ~^^
-
DECLARE @A VARCHAR(8000)DECLARE @POSITION1 INT = 0DECLARE @POSITION2 INT = 0DECLARE @START VARCHAR(10)DECLARE @END VARCHAR(10)SET @POSITION1 = 0SET @POSITION2 = 0SET @START = '<B>'SET @END = '</B>'SET @A = 'AA<B>AAA</B>AAAA<B>AAAAAAAAAA</B>AAAAAAAAAAA<B>AAAAAAAAAAAAAAAAAAAA</B>AA'WHILE 1=1 BEGINSET @POSITION1 = CHARINDEX(@START, @A, @POSITION1 + 1)IF @POSITION1 = 0 BREAKSET @POSITION2 = CHARINDEX(@END, @A, @POSITION1 + 1)IF @POSITION2 > 0 PRINT SUBSTRING(@A, @POSITION1, @POSITION2 - @POSITION1 + LEN(@END))END
-
Larry
2014.05.22 11:56
감사합니다~
많은 도움이 되었네요 ^^ 즐거운 하루 보내세요~
CHARINDEX의 문법을 보면
CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] ) 입니다.
첫번째 인자가 찾을 키워드, 두번째 인자가 대상 열 또는 데이터, 세번째 인자는 어디서 부터 찾을지 위치 입니다.
그리고 CHARINDEX는 키워드를 못찾으면 0을 반환하는데요.
태그를 찾았으면 그 위치를 start_location에 넣어가면서 0 나올때까지 반복해야 합니다.
쿼리 한방으로는 힘들테고
함수를 만드시는게 좋을거 같네요.