다음 문제에 대한 간단한 해결책을 찾기 위해 며칠을 보냈습니다. 도움이 필요합니다. 필자는 기본 키로 recid (계정 번호)와 모든 xml 데이터를 저장하는 xmlrecord라는 두 개의 열이있는 Oracle 테이블을 보유하고 있습니다. SQL 쿼리를 사용하여 응용 프로그램에서 다중 값 항목을 가져온 값을 내보내려고합니다. 데이터 손상을 제외하면 c1 m = "1"이면 항상 해당 c2 m = "1"이고 c3 m = "1"입니다. 테이블이 너무 커서 각 항목을 추출하기 위해 여러 번 칠 수 없으므로 행의 한 액세스에서 xmlrecord를 모두 꺼내야합니다. 내부 조인 (1 = 1) 및 xmltables를 시도했지만 항상 반환 된 데이터 또는 새 행의 각 새 일치에서 NULL로 끝납니다.여러 요소의 Oracle SQL 추출 값
RECID XMLRECORD
-----------------------------------
0000001 <row><c1>test</c1><c2>test2</c2>....</row>
0000002 <row><c1>test</c1><c2>test2</c2>....</row>
위의 기록이 있기 때문에 잘 작동합니다 : 최상위 레벨에서 추출 값으로 인해
가기본 테이블의 우리의 데이터 구조는 XML의 구조로이 경우에 나를 위해 작동하지 않습니다 다중 valuse 필드가 없습니다. XMLRecord에 저장된 데이터가 같은 때 나는 사투를 벌인거야 어디는 아래 :
이<row>
<c1>test1</c1>
<c1 m=1>test1_2</c1>
<c2>test2</c2>
<c2 m=1>test2_2</c2>
<c3>test3</c3>
<c3 m=1>test3_2</c3>
</row>
싶습니다 출력의 형식은 다음과 같습니다 :
RECID Col1 Col2 Col3
-----------------------------------
0000003 test1 test2 test3
0000003 test1_2 test2_2 test3_2
0000004 test1 test2 test3
0000004 test1_2 test2_2 test3_2
문제는 XML 구조가 잘못되었습니다. 같은 맥락에서 정확히 같은 이름을 가진 두 개의 서로 다른 요소가 필연적으로 문제를 일으킬 것입니다. – APC