CLOB 데이터를 마음대로 잘라내는 명령어가 있나요? 0 4 6,949

by 코드 [SQL Query] clob 문자열 자르기 [2013.07.05 13:15:40]



현재 프로시저에서 clob 데이터의 내용을 잘라내는 작업을 하려고 합니다.

데이터 내용은 웹에디터에 들어간 태그 문자열들인데요


<html><head>~   </html>


이런식으로 내용이 들어있는데

이값중에서  <body></body> 태그 만 남기려고 합니다.


html 태그는 정규화식을 이용해서 제거 할수 있겠는데

<body> 태그 앞에 들어갈 태그들이 뭐가 나올지 모르기 때문에 제대로 못자르고 있습니다.
</head> 가 올수도 있지만 </script> 도 있고 그외에 다양한 값들이 있어서
규칙을 찾기가 어렵네요


clob 데이터의 내부 문자열을 특정 문자열 앞부분을 제거하는 방법이 있다면 고수님들 도움 부탁드립니다.


원래  전체 태그가 들어간 데이터를    다른 테이블에 복사하는데 조건이  <body>~~~~~~</body> 만 남기는 것입니다.
by 아발란체 [2013.07.05 13:29:19]
WITH T AS (
    SELECT
    '<html>
    <head>
    <script....
    <link....
    </head>
    <body>
    body contents... 가나다 ...
    </body>
    </html>
    ' AS ctx
    FROM
    DUAL
)
SELECT
    SUBSTR(
    ctx,
    INSTR(LOWER(ctx), '<body>'),
    INSTR(LOWER(ctx), '</body>') - INSTR(LOWER(ctx), '<body>') + 7
    )
FROM
    T

by 아발란체 [2013.07.05 13:49:20]
--정규식 이용
WITH T AS (
    SELECT
    '<html>
    <head>
    <script....
    <link....
    </head>
    <body>
    body contents... 가나다 ...
    <input....
    </input>
    <select...
    </select>
    </body>
    </html>
    ' AS ctx
    FROM
    DUAL
)
SELECT REGEXP_SUBSTR(ctx, '<body>.*</body>', 1, 1, 'ni') FROM T

n은 줄바꿈 포함, i는 대소문자 구분없이.

by 손님 [2013.07.05 15:39:52]

clod에서 4000byte가 넘어가도 저게 먹히나요??

by 아발란체 [2013.07.05 15:51:07]
CLOB에 먹혀용..
다수 건수에 적용한다면 성능은 나빠지겠죠.

해당 태그 내용 볼 때만 적용한다면 괜찮을텐데..
다수 건에 적용해야 한다면 프로그램단에서 처리하는게 어떨까 하네용.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입