다중행을 단일행으로 변경하려고 하는데 막히네요 (값이 html태그입니다) 0 5 2,337

by 기리 [SQL Query] 다중행 단일행 변경 html태그 [2018.03.27 11:41:01]


select seq, dbms_lob.substr(html_clob,3900,1) html_clob from serp_html union all 
select seq, dbms_lob.substr(html_clob,8000,3901) html_clob from serp_html union

-------

select  seq,html_clob
from (
	select seq,dbms_lob.substr(html_clob,3900,1) html_clob from serp_html
	where seq = 1
	union all
	select seq,dbms_lob.substr(html_clob,8000,3901) html_clob from serp_html
	where seq = 1
)


varchar2로는 부족해서 clob을 사용해서 출력을 하려고 합니다.

그런데 다중행의 값을 복사 붙여넣기 하니 줄바꿈이 들어가서

이 줄바꿈을 없애려고 하는데 어떻게 해야될까요?

 

with t as 
( 
select seq, dbms_lob.substr(html_clob,3900,1) html_clob from serp_html union all 
select seq, dbms_lob.substr(html_clob,8000,3901) html_clob from serp_html union
)
select 
seq, 
replace(html_clob,ch(13),'') AS html_clob 
from t 

--이런식으로 해봤는데 누락된 select....

 

 

xmlagg(xmlelement(a,val)) 이런 xml화 시켰다가 값만 뽑아내는 방법도 있던데 출력하고자 하는 값이 이미 html태그라....패스했습니다.

(oracle 11g Enterprise 버전입니다.)

by 기리 [2018.03.27 13:10:01]

마지막 union 을 빼고 ch를 chr로 바꾸니 error는 없네요.....


by 마농 [2018.03.27 13:13:06]

질문이 좀 두서가 없고, 뭐가 핵심인지 모르겠네요?
1. varchar2로는 부족해서 clob을 사용해서 출력을 하려고 합니다.
  - 원래부터 clob 인거처럼 보이네요.
2. 줄바꿈을 없애려고 하는데 ?
  - 왜 없애려고 하는지는 모르겠지만
  - 줄바꿈은 CHR(13) 과 CHR(10) 을 둘 다 없애면 될 듯 하네요.
  - CH(13) 은 오타인가요?
3. dbms_lob.substr 은 왜 사용하신건지?


by 기리 [2018.03.27 14:16:27]

1.varchar2 크기를 넘어가는 데이터라 clob에 담았습니다.

2.한줄코드만 인식을 해서 줄바꿈을 없애려고 했구요

3. 구글링으로.....

생각보다 답이 가까이 있었는데 헤맸네요;; 답변 감사합니다

select seq, to_clob(dbms_lob.substr(html_clob,3900,1)) ||  to_clob(dbms_lob.substr(html_clob,8000,3901)) html_clob from serp_html where seq= 1

 


by 기리 [2018.03.27 13:25:59]

with t as 

select seq, dbms_lob.substr(html_clob,3900,1) html_clob from serp_html where seq= 1 union all 
select seq, dbms_lob.substr(html_clob,8000,3901) html_clob from serp_html  where seq = 1
)
SELECT SUBSTR (
          EXTRACTVALUE (
             XMLELEMENT (
                x,
                XMLAGG (XMLELEMENT (x, ' ', t.html_clob) ORDER BY t.seq).EXTRACT (
                   '//text()')),
             '//text()'),
          2) as html_clob
FROM
t

이렇게 만들었는데 사용자함수의 결과값이 너무 크다는 에러.......

varchar2에 다 안들어가서 clob에 넣고 나눠서 합칠려했는데....제자리로 돌아온거같네요


by 마농 [2018.03.27 14:19:48]

1. 애초에 clob 으로 되어 있는걸
2. 나누었다가
3. 다시 합치려고 하네요.
2,3 단계 없이 그냥 1번만 조회하면 되는게 아닌지?

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입