是否可以将数据存储在sap hana中的xml字符串中。有人能给我一个如何做到这一点的例子。本质上是尝试在节点中存储列的子字符串,并将结果连接到select语句中的另一个表。互联网上没有太多的材料,所以任何帮助将不胜感激。谢谢。
答案 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函数(XMLEXTRACT
和XMLEXTRACTVALUE
)可用:https://www.youtube.com/watch?v=tMTn0i0fpT0
在HANA2之前,没有可用的特定XML函数。