将数据存储在表中的xml字符串中

时间:2017-06-01 22:47:08

标签: xml sap hana

是否可以将数据存储在sap hana中的xml字符串中。有人能给我一个如何做到这一点的例子。本质上是尝试在节点中存储列的子字符串,并将结果连接到select语句中的另一个表。互联网上没有太多的材料,所以任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:2)

从HANA 2.0开始,对解析包含XML的列值的支持非常有限,请参阅函数XMLEXTRACT和XMLEXTRACTVALUE。

这是一个以某种方式从XML-Documents动态提取值并将它们连接到其他表的示例。 但是警告:此示例仅在您确切知道每个文档包含的人物项目时才有效。我希望在访问不存在的项时获取NULL,但我收到错误。所以,也许有人可以改进这一点,或者目前功能太有限了。

drop table "XMLExample";
create column table "XMLExample"
 ("DocID" NVARCHAR(10),
  "Doc" nvarchar(5000) );

 insert into "XMLExample" ("DocID", "Doc") values
  ( '1',
    '<Doc>
    <Item><ID>1</ID><Prod>A</Prod><Quantity>10</Quantity></Item>
    <Item><ID>2</ID><Prod>B</Prod><Quantity>12</Quantity></Item>
    </Doc>'
   );
 insert into "XMLExample" ("DocID", "Doc") values
  ( '2',
    '<Doc>
    <Item><ID>1</ID><Prod>A</Prod><Quantity>1</Quantity></Item>
    <Item><ID>2</ID><Prod>C</Prod><Quantity>3</Quantity></Item>
    </Doc>'
   );

drop table "Products";  
create column table "Products"
("ProdID" NVARCHAR(10),
 "Price" DECIMAL(10,2) );

insert into "Products" ("ProdID", "Price") values ('A', '13.54');
insert into "Products" ("ProdID", "Price") values ('B', '3.00'); 
insert into "Products" ("ProdID", "Price") values ('C', '5.30'); 


select "Items".*, "Price", "Price" * "Quantity" "Total" from
(
    SELECT "DocID", 
      XMLEXTRACTVALUE(
      "XMLExample"."Doc",
      '/Doc/Item[' || "SERIES"."ELEMENT_NUMBER" || ']/ID'
    ) "ItemID",
      XMLEXTRACTVALUE(
      "XMLExample"."Doc",
      '/Doc/Item[' || "SERIES"."ELEMENT_NUMBER" || ']/Prod'
    ) "ProdID",
    XMLEXTRACTVALUE(
      "XMLExample"."Doc",
      '/Doc/Item[' || "SERIES"."ELEMENT_NUMBER" || ']/Quantity'
    ) "Quantity"
     FROM "XMLExample",
      SERIES_GENERATE_INTEGER(1, 0, 2 ) "SERIES" -- replace 2 with your max. number of Items
) "Items"
inner join "Products"
   on "Products"."ProdID" = "Items"."ProdID"      
Order by "DocID", "ItemID"

答案 1 :(得分:1)

从HANA开始,XML函数(XMLEXTRACTXMLEXTRACTVALUE)可用:https://www.youtube.com/watch?v=tMTn0i0fpT0

在HANA2之前,没有可用的特定XML函数。