데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
Table Category
idx [int]
Table Book
idx [int]
category_idx [int]
Table Page
idx
book_idx
content [nvarchar](max)
와 같은 구조의 테이블들이 있습니다
책의 내용(content)에 그림이 있는 경우에는 "imagexxx" 와 같은 문자열이 포함이 되어있는데
xxx는 이미지의 번호를 의미하는데 이를 추출하려고 합니다
또 content안에는 여러개의 이미지가 존재할수 있습니다
예를 들면
가나다라마바사 "image1" 마바사아 "image10001"
과 같은 내용이 들어있을 수 있습니다
특정 카테고리(1,2,3)의 책들안에 있는 이미지의 인덱스를 추출하고 싶어서
select idx
from page
where book_idx in (
select idx from book
where category_idx in (1,2,3)
) and 본문내용 like '%"image%'
위와 같이 우선 이미지가 포함된 page의 idx를 구할수는 있겟지만
content문자열에서 여러개의 "imagexxx"형태를 찾아 xxx부분을 추출하려면 어떻게 해야할까요?
디비 양이 매우 많아 성능도 상당히 중요합니다
imagexxx 다음 문자가 패턴이 일정하다면
말하자면 imagexxx 다음엔 꼭 space가 온다던지.... 하면
charindex로 할 수 있을듯 하네요.
charindex가 시작시점을 정할 수 있으니까 먼저 image를 찾고 거기서 부터 space를 찾고 자르고 하면....