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 버전입니다.)
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에 넣고 나눠서 합칠려했는데....제자리로 돌아온거같네요