在SAP HANA系统中以XML字符串格式存储数据

在较早的SAP HANA版本中,未提供XML函数。在HANA 2.0中,提供了这两个功能-XMLEXTRACT和XMLEXTRACTVALUE,用于在SAP HANA中提取XML字符串。

使用XMLEXTRACT

XMLEXTRACT(<XML_document>, <XPath_query> [,<NamespaceDeclarations>])

使用的语法-

<XML_document>

指定CLOB,NCLOB,VARCHAR或NVARCHAR类型的XML文档。

<XPath_query>

指定类型为VARCHAR或NVARCHAR的XPath表达式。

<NamespaceDeclarations>

指定类型为VARCHAR或NVARCHAR的命名空间声明。

描述

返回匹配的XML元素。返回值的类型为VARCHAR / NVARCHAR或CLOB / NCLOB,具体取决于为<XML_document>指定的类型。

如果XML元素为空(例如<name> </ name>),则返回空结果。如果找不到XML元素,则该函数返回错误。

SELECT XMLEXTRACT(                        
   '<doc xmlns:ns1="http://namespace1.sap.com" xmlns:ns2="http://namespace2.sap.com">
<ns1:item><ns1:id>1</ns1:id><ns1:name>Box</ns1:name></ns1:item>
<ns1:item><ns1:id>2</ns1:id><ns1:name>Jar</ns1:name></ns1:item>
<ns2:item><ns2:id>3</ns2:id><ns2:name>Table</ns2:name></ns2:item>
</doc>',
   '/doc/ns1:item[2]/ns1:name',
   'xmlns:ns1="http://namespace1.sap.com" xmlns:ns2="http://namespace2.sap.com"'
) FROM DUMMY;

使用XMLEXTRACTVALUE

XMLEXTRACTVALUE(<XML_document>, <XPath_query> [,<NamespaceDeclarations>])
<XML_document>

指定CLOB,NCLOB,VARCHAR或NVARCHAR类型的XML文档。

<XPath_query>

指定类型为VARCHAR或NVARCHAR的XPath表达式。

<NamespaceDeclarations>

指定类型为VARCHAR或NVARCHAR的命名空间声明。

描述

返回匹配的XML元素的文本内容。返回值的类型为VARCHAR / NVARCHAR或CLOB / NCLOB,具体取决于为<XML_document>指定的类型。

如果XML元素为空(例如<name> </ name>),则返回空结果。如果找不到XML元素,则该函数返回错误。

仅子XML节点的单个元素支持此功能。例如,您可以使用XMLEXTRACTVALUE来查询下面的XML文档中的<name>和<age>元素,因为它们是子节点的单个元素。但是,您无法查询文档的<parent>或<child>元素,因为这两个元素都包含多个子节点。

<parent>
   <child>
      <name>Tom</name>
      <age>18</age>
   </child>
</parent>