Как да получа стойност XML blob тип в PLSQL?

Имам XML формат на данни като този.

<"id=1">
   <"a">Test<"/a">
   <"b">Test2<"/b">
   <"c">Test3<"/c">

Как да получа стойност C в поле XMLData?

*value C is Test3

person aldiyudha    schedule 07.03.2018    source източник
comment
Вашите данни не са валиден XML   -  person Wernfried Domscheit    schedule 07.03.2018
comment
Какво е XML тип петно?   -  person Wernfried Domscheit    schedule 07.03.2018


Отговори (1)


Как да получа стойност C в поле XMLData?

Както спомена @Wernfried Domscheit, вашият xml не изглежда правилно. Вижте по-долу един начин да го направите:

create table traptabclob(testclob clob);
/

insert into traptabclob 
values
('<?xml version="1.0" encoding="UTF-8"?>
<DCResponse>
 <id>
   <Field key="a">Test</Field>
   <Field key="b">Test2</Field>
   <Field key="c">Test3</Field> 
  </id>                            
</DCResponse>');
/

Запитване:

SELECT 
EXTRACTVALUE(xmltype(testclob), '/DCResponse/id/Field[@key="c"]') col1
FROM traptabclob;

Изход:

Col1
----
Test3

ДЕМО

Редактиране:

Благодаря ви за отговора, моите данни нямат етикет <?xml> version="1.0".... моите данни точно като <row> id="1"><a>Test</a><b>Test2</b></row>, изглеждат като тип xml, но не знам това е тип xml или не. Благодаря ти

Моля, вижте, че току-що дадох пример за валиден xml файл, който обикновено съдържа <?xml> version="1.0"..... Проблемът с вашия xml код обаче е поставянето на тагове в ". Вижте по-долу как работи:

create table traptabclob(testclob clob);
insert into traptabclob values('
 <id>
   <a>Test</a>
   <b>Test2</b>
   <c>Test3</c> 
  </id>');

Запитване:

SELECT EXTRACTVALUE(xmltype(testclob), '/id/c') col1 
FROM traptabclob ;

Изход:

Col1
----
Test3

ДЕМО 1

person XING    schedule 07.03.2018
comment
Благодаря ви за отговора, данните ми нямат етикет ‹?xml version=1.0... данните ми точно като ‹row id=1›‹a›Test‹/a›‹b›Test2‹/b›‹ /row›, изглежда като xml тип, но не знам това е xml тип или не. Благодаря ти - person aldiyudha; 08.03.2018
comment
Опитах SELECT EXTRACTVALUE(xmltype(testclob), '/ROW/c2') col1 FROM traptabclob в sqlfiddle, работи, но когато опитах в sql developer, не работи - person aldiyudha; 08.03.2018
comment
@aldiyudha Можете ли да редактирате въпроса си и да поставите това, което опитахте? - person XING; 08.03.2018
comment
благодаря ви за отговора, работи, но не използвах функцията xmltype, защото данните ми вече са xmltype - person aldiyudha; 09.03.2018