金仓数据库KingbaseES 原生XML系列三 您所在的位置:网站首页 sql转换数据类型函数 金仓数据库KingbaseES 原生XML系列三

金仓数据库KingbaseES 原生XML系列三

#金仓数据库KingbaseES 原生XML系列三| 来源: 网络整理| 查看: 265

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' , 'aaa' , 'sql001rac001' , 'v8r3001v8r6001'); INSERT INTO xmldata values(2, 'lisi' , 'bbb' , 'sql002rac002' , 'v8r3002v8r6002'); INSERT INTO xmldata values(3, 'wangwu' , 'ccc' , 'sql003rac003' , 'v8r3003v8r6003'); 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 ------------------------------------------------------+----------------------------------------------------------------- v8r3001v8r6001 | v8r3001v8r6001 v8r3002v8r6002 | v8r3002v8r6002 v8r3003v8r6003 | v8r3003v8r6003 (3 行记录) test=# select extract(xmldata , '/kes/sql' ) ,xmldata from xmldata ; extract | xmldata -------------------+----------------------------------------------- sql001 | sql001rac001 sql002 | sql002rac002 sql003 | sql003rac003 (3 行记录) -- 获取节点属性值 test=# select extract('sql001rac001','/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 | sql001rac001 sql002 | sql002rac002 sql003 | sql003rac003 (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 | v8r3001v8r6001 v8r3002 | v8r3002v8r6002 v8r3003 | v8r3003v8r6003 (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 | sql001rac001 1 | 1 | 0 | sql002rac002 1 | 1 | 0 | sql003rac003 (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 --------------------------------------- {sql001,rac001} {sql002,rac002} {sql003,rac003} (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 ---------------------+------- {sql001} | {} {sql002} | {} {sql003} | {} (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 | aaa f | bbb f | ccc (3 行记录) test=# SELECT xmlexists('/kes/sql' PASSING BY VALUE xmldata) ,xmldata from xmldata; xmlexists | xmldata -----------+----------------------------------------------- t | sql001rac001 t | sql002rac002 t | sql003rac003 (3 行记录)

更多信息,参见https://help.kingbase.com.cn/v8/index.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有