У меня есть одна таблица в моей БД, один столбец которой содержит XML. Как я могу получить значение тега XML? пожалуйста, предложите SQL запрос - PullRequest
0 голосов
/ 03 марта 2020

В приведенном ниже примере XML Я хочу найти значение 'TAG2', которое 'НАЙДЕТСЯ' -----> Пожалуйста, предложите оператор select для проблемы

<?xml version="1.0" encoding="WINDOWS-1252"?>
<reply timestamp='07:49:51:763'>
<dataApp processor='abcd.com' stencilId='INDIA' indText='0' class='RULES'>
<status code='000' severity='I' msg='Service Execution successful' classifier='I:kernel'/>
<var id='QWERTY1' v='' f='X' attrsASF='000000100000110000000001'/>
<var id='QWERTY2' v='20200302' f='D' attrsASF='000000000000000000000000'/>
<var id='QWERTY3' v='20991231' f='D' attrsASF='000000000000000000000000'/>
<var id='QWERTY4' v='*' f='X' attrsASF='000000100000110000000001'/>
<var id='QWERTY5' v='0' f='N' attrsASF='000000100000110000000000'/>
<var id='QWERTY6' v='1' f='N' attrsASF='000000100000110000000000'/>
000000000000'/>
<var id='OS_USERUID' v='ABCD' f='X' attrsASF='000000100000110000000001'/>
<tfo n='IGS'>
    <attr n='TAG1' v='AAAA' f='X' m='I'/>
    <attr n='TAG2' v='TO BE FOUND' f='D' m='I'/>

1 Ответ

0 голосов
/ 04 марта 2020

Попробуйте следующее. Вы можете откомментировать закомментированный блок, чтобы выполнить оператор как есть.

/*
WITH MYTAB (XML) AS
(
VALUES XMLPARSE 
(
DOCUMENT '<?xml version="1.0" encoding="WINDOWS-1252"?>
<reply timestamp="07:49:51:763">
  <dataApp processor="abcd.com" stencilId="INDIA" indText="0" class="RULES">
    <tfo n="IGS">
      <attr n="TAG1" v="AAAA" f="X" m="I"/>
      <attr n="TAG2" v="TO BE FOUND" f="D" m="I"/>
    </tfo>   
  </dataApp>
</reply>
'
)
)
*/
SELECT X.V
FROM 
  MYTAB T
, XMLTABLE
(
'$doc/reply/dataApp/tfo/attr[@n="TAG2"]' PASSING T.XML AS "doc"
COLUMNS 
  V VARCHAR(20) PATH '@v'
) X;

Пример dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...