渭南市住房和城乡建设局网站,腾讯新闻发布平台,杭州网站建设多少钱,国外旅游哪几个网站做攻略好KingbaseES 原生XML系列三--XML数据查询函数(EXTRACT,EXTRACTVALUE,EXISTSNODE,XPATH,XPATH_EXISTS,XMLEXISTS) XML的简单使其易于在任何应用程序中读写数据#xff0c;这使XML很快成为数据交换的一种公共语言。在不同平台下产生的信息#xff0c;可以很容易加载XML数据到程序… KingbaseES 原生XML系列三--XML数据查询函数(EXTRACT,EXTRACTVALUE,EXISTSNODE,XPATH,XPATH_EXISTS,XMLEXISTS) XML的简单使其易于在任何应用程序中读写数据这使XML很快成为数据交换的一种公共语言。在不同平台下产生的信息可以很容易加载XML数据到程序中并分析他并以XML格式输出结果。 xml数据类型可以被用来存储XML数据。它比直接在一个text域中存储XML数据的优势在于它会检查输入值的结构是不是良好并且有支持函数用于在其上执行类型安全的操作。 本文详细介绍了KingbaseES中集成的相关xml数据查询函数使用。 准备数据CREATE TABLE public.xmldata (id integer NULL,comm varchar NULL,xmlvarchar varchar NULL,xmldata xml NULL,XMLarray xml NULL
);INSERT INTO xmldata values(1, zhangsan , kesaaa/kes , kessqlsql001/sqlracrac001/rac/kes , kesversionv8r3001/versionversionv8r6001/version/kes);
INSERT INTO xmldata values(2, lisi , kesbbb/kes , kessqlsql002/sqlracrac002/rac/kes , kesversionv8r3002/versionversionv8r6002/version/kes);
INSERT INTO xmldata values(3, wangwu , kesccc/kes , kessqlsql003/sqlracrac003/rac/kes , kesversionv8r3003/versionversionv8r6003/version/kes); xml函数列表 EXTRACTEXTRACTVALUEEXISTSNODEXPATHXPATH_EXISTSXMLEXISTS json函数简介 EXTRACT 功能 extract会返回xpath指定的节点的xml数据。 用法 extract(xml_instance xml, xpath text) 示例 test# select extract(xmlarray , /kes/version ) ,xmlarray from xmldata ;extract | xmlarray
-----------------------------------------------------------------------------------------------------------------------versionv8r3001/versionversionv8r6001/version | kesversionv8r3001/versionversionv8r6001/version/kesversionv8r3002/versionversionv8r6002/version | kesversionv8r3002/versionversionv8r6002/version/kesversionv8r3003/versionversionv8r6003/version | kesversionv8r3003/versionversionv8r6003/version/kes
(3 行记录)test# select extract(xmldata , /kes/sql ) ,xmldata from xmldata ; extract | xmldata
------------------------------------------------------------------sqlsql001/sql | kessqlsql001/sqlracrac001/rac/kessqlsql002/sql | kessqlsql002/sqlracrac002/rac/kessqlsql003/sql | kessqlsql003/sqlracrac003/rac/kes
(3 行记录)-- 获取节点属性值
test# select extract(kessql versionv8r6c7sql001/sqlracrac001/rac/kes,/kes/sql/version) ;extract
---------v8r6c7
(1 行记录) EXTRACTVALUE 功能 函数extractvalue会返回xpath指定的节点的值。如果节点的值是另一个节点则不可获取若指定节点路径存在多个相同节点则会报错也可通过数组形式如/a/b[1]指定返回具体节点。 用法 extractvalue(xml_instance xml, xpath text)
extractvalue(xml_instance xml, xpath text, namespace _text) 示例 test# select extractvalue(xmldata , /kes/sql ) ,xmldata from xmldata ;extractvalue | xmldata
-------------------------------------------------------------sql001 | kessqlsql001/sqlracrac001/rac/kessql002 | kessqlsql002/sqlracrac002/rac/kessql003 | kessqlsql003/sqlracrac003/rac/kes
(3 行记录)-- 多个值时报错。
test# select extractvalue(xmlarray , /kes/version ) ,xmlarray from xmldata ;
错误: EXTRACTVALUE returns value of only one node-- 多个值时获取某个值
test# select extractvalue(xmlarray , /kes/version[1] ) ,xmlarray from xmldata ;extractvalue | xmlarray
-------------------------------------------------------------------------------v8r3001 | kesversionv8r3001/versionversionv8r6001/version/kesv8r3002 | kesversionv8r3002/versionversionv8r6002/version/kesv8r3003 | kesversionv8r3003/versionversionv8r6003/version/kes
(3 行记录) EXISTSNODE 功能 XML函数existsnode会遍历xml实例判断指定节点是否存在于实例中。若存在则返回1不存在则返回0。 用法 existsnode(text PASSING [BY { REF | VALUE }] xml [BY { REF | VALUE }])
existsnode(xml_instance xml, xpath text) 示例 test# select existsnode(xmldata , /kes/sql), existsnode(xmlarray,/kes/version), existsnode(xmldata , /kes/noitem), xmldata from xmldata ;existsnode | existsnode | existsnode | xmldata
-----------------------------------------------------------------------------------1 | 1 | 0 | kessqlsql001/sqlracrac001/rac/kes1 | 1 | 0 | kessqlsql002/sqlracrac002/rac/kes1 | 1 | 0 | kessqlsql003/sqlracrac003/rac/kes
(3 行记录) XPATH 功能 函数xpath在 XML 值xml上计算 XPath 1.0 表达式 xpath (a text value)。它返回一个 XML 值的数组该数组对应于该 XPath 表达式产生的结点集合。 用法 xpath(xpath, xml [, nsarray]) 示例 test# select xpath(/kes/* , xmldata) from xmldata ; xpath
---------------------------------------{sqlsql001/sql,racrac001/rac}{sqlsql002/sql,racrac002/rac}{sqlsql003/sql,racrac003/rac}
(3 行记录) XPATH_EXISTS 功能 函数xpath_exists是xpath函数的一种特殊形式。它返回一个布尔值表示查询是否被满足 用法 xpath_exists(xpath, xml [, nsarray]) 示例 test# select xpath(/kes/sql , xmldata) , xpath(/kes/no , xmldata) from xmldata ; xpath | xpath
----------------------------{sqlsql001/sql} | {}{sqlsql002/sql} | {}{sqlsql003/sql} | {}
(3 行记录) XMLEXISTS 功能 XMLExists检查给定 XQuery 表达式是否返回非空 XQuery 序列。 用法 XMLEXISTS(XQuery_string [XML_passing_clause])XML_passing_clause:PASSING [BY VALUE ] expr [AS identifier] [, ... ] 示例 test# SELECT xmlexists(/kes[text() aaa] PASSING BY VALUE xmlvarchar) ,xmlvarchar from xmldata ;xmlexists | xmlvarchar
---------------------------t | kesaaa/kesf | kesbbb/kesf | kesccc/kes
(3 行记录)test# SELECT xmlexists(/kes/sql PASSING BY VALUE xmldata) ,xmldata from xmldata;xmlexists | xmldata
----------------------------------------------------------t | kessqlsql001/sqlracrac001/rac/kest | kessqlsql002/sqlracrac002/rac/kest | kessqlsql003/sqlracrac003/rac/kes
(3 行记录)