Oracle SQL에서 XML 객체를 쿼리하는 것과 관련하여 많은 항목이 있습니다. 그러나 여전히, 나는 나의 의지에 대한 어떤 대답도 찾을 수 없었다. 일부 열을 포함하는 sql-table ("obj")이 있습니다. XML 형식의 clob 객체 (열은 "정의"라고 함). clob에서 구체적인 값을 추출하고 싶습니다. XML은 다음과 같습니다Oracle SQL에서 XML 객체 쿼리 - 객체의 다른 속성을 지정하여 속성 값 가져 오기
<?xml version="1.0" encoding="UTF-8"?>
<m>
<i n="Status">0</i>
<s n="Description">AmountDifference</s>
<s n="Name">InputvsOutput</s>
<a n="Variables">
<m>
<s n="Name">Formula</s>
<s n="Value">B-A</s>
</m>
<m>
<s n="Name">CriticalDiff</s>
<s n="Value">abs({B} - {A}) < 10</s>
</m>
</a>
</m>
는 SQL 쿼리는 두 개의 값을 반환해야합니다 : 설명과 값 이름 = CriticalDiff. = 캐스트-BLOK가 잘 작동
CAST(
CASE WHEN obj.definition is not null then
UTL_I18N.UNESCAPE_REFERENCE(
XMLTYPE(obj.definition).
EXTRACT('//s[@n="Description"]/text()')
.getStringVal())
END as varchar(200)) as "Rule Expression"
, obj.definition as rule_xml
,하지만 난 (그 이름 값을 얻을 수 있도록 유사한 방식으로 마지막 명령을 변환하는 방법을 궁금해 : SQL 쿼리의 부분은 다음과 같습니다 CriticalDiff).
내가 직면 한 어려움은 동일한 속성 이름 (이름, 값)을 가진 두 개의 유사한 요소 (m)가 있다는 것입니다.
"CriticalDiff"에서 "가치"- 속성을 얻을 수있는 아이디어가 있습니까?
미리 감사드립니다.