database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6862 게시물 읽기
No. 6862
문자열에서 원하는 문자열 추출 문의드립니다
작성자
고영훈(kyh9052)
작성일
2014-11-04 16:47ⓒ
2014-11-04 16:49ⓜ
조회수
5,735


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부분을 추출하려면 어떻게 해야할까요?

디비 양이 매우 많아 성능도 상당히 중요합니다
 

이 글에 대한 댓글이 총 1건 있습니다.

WITH Page AS
(
SELECT 1 idx, 데이터베이스사랑넷 "image123"' content
UNION ALL SELECT 2, '가나다라마바사 "image1" 마바사아 "image10001" 아자'
UNION ALL SELECT 3, '구루비닷넷 마농'
UNION ALL SELECT 4, 'a "image2" b "image3" c "image4" d "image5"'
)
, tmp AS
(
SELECT idx
     , 1 lv
     , SUBSTRING(content, CHARINDEX('"image', content) + 6, 9999999) x
  FROM Page
 WHERE content LIKE '%"image%'
 UNION ALL
SELECT idx
     , lv + 1 lv
     , SUBSTRING(x, CHARINDEX('"image', x) + 6, 9999999) x
  FROM tmp
 WHERE x LIKE '%"image%'
)
SELECT idx
     , lv
     , SUBSTRING(x, 1, CHARINDEX('"', x) - 1) image_idx
  FROM tmp
 ORDER BY idx, lv
;

마농(manon94)님이 2014-11-04 18:35에 작성한 댓글입니다.
이 댓글은 2014-11-04 18:36에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
6865분산트랜잭션
지상우
2014-12-01
5500
6864세개의 테이블 Select 하기 [1]
김우성
2014-11-13
5545
6863데이터베이스 보안 주체로 실행할 수 없습니다. 오류 문의드립니다 [1]
고영훈
2014-11-06
6523
6862문자열에서 원하는 문자열 추출 문의드립니다 [1]
고영훈
2014-11-04
5735
6861조회 합산 [4]
초보
2014-10-21
5467
6860mssql 2008 설치문의드립니다. [3]
박세민
2014-10-21
6214
6859NULL 인식문제.. [2]
우암
2014-10-20
5890
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다