그냥 조회를 하면 데이타 확인이 안된다.
이럴때는 아래와 같은 방법을 사용하자..
XMLTYPE이 있는 테이블명 : TB_XML
XMLTYPE의 칼럼명 : col_xml
SELECT XMLSERIALIZE(CONTENT col_xml as VARCHAR2(2000)) FROM TB_XML;
추가로 한가지 항목만을 가져오고 싶을 경우
예를 들어 col_xml 칼럼에 아래와 같은 xml문서가 들어있고, PNAME을 조회하고 싶을때
<PERSON>
<PNAME>FOTOG</PNAME>
<PHONE>011-111-1111</PHONE>
</PERSON>
SELECT extractValue(col_xml, '/PERSON/PNAME') FROM TB_XML;
! 단 extractValue를 뽑아낼때 컬럼이 xml type이 아닐 경우 XMLTYPE을 적어 준다.
SELECT extractValue( XMLTYPE(col_xml), '/PERSON/PNAME') FROM TB_XML;ex )
<Data><CallNumber>TES</CallNumber><TwitterUrl>TEST</TwitterUrl><FacebookUrl>TEST</FacebookUrl><EnableRemoteSvc>Y</EnableRemoteSvc></Data>
, EXTRACTVALUE(XMLTYPE(NVL(B.ADD_INF6, '<Data/>') ) , 'Data/CallNumber') AS callNo
, EXTRACTVALUE(XMLTYPE(NVL(B.ADD_INF6, '<Data/>') ), 'Data/TwitterUrl') AS twitterUrl
, EXTRACTVALUE(XMLTYPE(NVL(B.ADD_INF6, '<Data/>') ), 'Data/FacebookUrl') AS facebookUrl
, EXTRACTVALUE(XMLTYPE(NVL(B.ADD_INF6, '<Data/>') ), 'Data/EnableRemoteSvc') AS remoteChk
출처 : http://fotog.tistory.com/406
-------------------------------------------------------------------------------------------------------
-- TEST
WITH TEST AS (SELECT '<Data>
<Good>
<CallNumber>TES</CallNumber>
<TwitterUrl>TEST</TwitterUrl>
<FacebookUrl>TEST</FacebookUrl>
<EnableRemoteSvc>Y</EnableRemoteSvc>
</Good>
</Data>' ADD_INF6 FROM DUAL)
SELECT EXTRACTVALUE(XMLTYPE(NVL(ADD_INF6, '<Data/>')), 'Data/Good/CallNumber') AS CALLNO
FROM TEST
-- 결과 : TES
'SQL' 카테고리의 다른 글
ORACLE - KEEP(DENSE_RANK FIRST ORDER BY …) - A컬럼 기준 정렬 후 지정 된 행의 B컬럼값 추출하기 (0) | 2013.09.05 |
---|---|
REGEXP_REPLACE 정규식 표현을 이용한 행변환 (0) | 2013.09.05 |
oracle XMLELEMENT,XMLAGG,XMLFOREST,XMLATTRIBUTES 함수 (0) | 2013.07.04 |
oracle xml (0) | 2013.07.04 |
ORACLE 행을 열로 , 열을 행으로 (0) | 2013.01.29 |