KingbaseES 原生XML系列四--XML通用函数(XMLAGG,XMLCOMMENT,XMLCONCAT,XMLELEMENT,XMLFOREST,XMLPI,XMLROOT,XMLSEQUENCE)

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' , '<kes>aaa</kes>' , '<kes><sql>sql001</sql><rac>rac001</rac></kes>' , '<kes><version>v8r3001</version><version>v8r6001</version></kes>');
INSERT INTO xmldata values(2, 'lisi' , '<kes>bbb</kes>' , '<kes><sql>sql002</sql><rac>rac002</rac></kes>' , '<kes><version>v8r3002</version><version>v8r6002</version></kes>');
INSERT INTO xmldata values(3, 'wangwu' , '<kes>ccc</kes>' , '<kes><sql>sql003</sql><rac>rac003</rac></kes>' , '<kes><version>v8r3003</version><version>v8r6003</version></kes>');

xml函数列表

json函数简介

XMLAGG

功能:

函数xmlagg是一个聚集函数。它将聚集函数调用的输入值串接起来

用法:

xmlagg(xml)

示例:

test=# select xmlagg(xmlvarchar) from xmldata ;
xmlagg
--------------------------------------------
<kes>aaa</kes><kes>bbb</kes><kes>ccc</kes>
(1 行记录)

XMLCOMMENT

功能:

XMLComment使用 的评估结果生成 XML 注释value_expr。

用法:

XMLCOMMENT(values_expr)

示例:

test=# select xmlcomment('doc') from dual ;
xmlcomment
------------
<!--doc-->
(1 行记录)

XMLCONCAT

功能:

XMLConcat将一系列XMLType实例作为输入,连接每一行的一系列元素,并返回连接后的系列。

用法:

XMLCONCAT(XMLType_instance [,...])

示例:

test=# select xmlconcat(xmlvarchar , xmldata) from xmldata ;
xmlconcat
-------------------------------------------------------------
<kes>aaa</kes><kes><sql>sql001</sql><rac>rac001</rac></kes>
<kes>bbb</kes><kes><sql>sql002</sql><rac>rac002</rac></kes>
<kes>ccc</kes><kes><sql>sql003</sql><rac>rac003</rac></kes>
(3 行记录)

XMLELEMENT

功能:

XMLElement获取元素名称identifier或评估元素名称EVALNAME value_expr、元素的可选属性集合以及构成元素内容的参数。它返回一个类型的实例XMLType。

用法:

XMLELEMENT([{ENTITYESCAPING|NOENTITYESCAPING}] {[NAME] identifier|EVALNAME value_expr} [, XML_attributes_clause] [,value_expr [[AS] c_alias]][,...])

XML_attributes_clause:
XML_ATTRIBUTES( [{ENTITYESCAPING|NOENTITYESCAPING}] [{SCHEMACHECK|NOSCHEMACHECK}] value [{[AS] c_alias| AS EVALINAME value_expr}] )

示例:

test=# select xmlelement(name comm, id) from xmldata ;
xmlelement
----------------
<comm>1</comm>
<comm>2</comm>
<comm>3</comm>
(3 行记录) test=# select xmlelement(name item , xmlattributes(comm as test)) from xmldata ;
xmlelement
-------------------------
<item test="zhangsan"/>
<item test="lisi"/>
<item test="wangwu"/>
(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 | <kes>aaa</kes>
f | <kes>bbb</kes>
f | <kes>ccc</kes>
(3 行记录) test=# SELECT xmlexists('/kes/sql' PASSING BY VALUE xmldata) ,xmldata from xmldata;
xmlexists | xmldata
-----------+-----------------------------------------------
t | <kes><sql>sql001</sql><rac>rac001</rac></kes>
t | <kes><sql>sql002</sql><rac>rac002</rac></kes>
t | <kes><sql>sql003</sql><rac>rac003</rac></kes>
(3 行记录)

XMLFOREST

功能:

XMLForest将其每个参数参数转换为 XML,然后返回一个 XML 片段,该片段是这些转换后的参数的串联。

用法:

XMLFOREST(value_expr [as {c_alias|EVALINAME value_expr]}][,...])

示例:

test=# select XMLFOREST( id , comm) from xmldata ;
xmlforest
---------------------------------
<id>1</id><comm>zhangsan</comm>
<id>2</id><comm>lisi</comm>
<id>3</id><comm>wangwu</comm>
(3 行记录)

XMLPI

功能:

XMLPIidentifier使用和可选的评估结果生成 XML 处理指令value_expr。

用法:

XMLPI({[NAME]idenfitier|EVALNAME value_expr} [, value_expr])

示例:

test=# select xmlpi(name id , comm) from xmldata ;
xmlpi
-----------------
<?id zhangsan?>
<?id lisi?>
<?id wangwu?>
(3 行记录)

XMLROOT

功能:

XMLROOT允许您通过在现有 XML 值的 XML 根信息 (prolog) 中提供版本和独立属性来创建新的 XML 值。

用法:

XMLROOT(value_expr,VERSION {value_expr| NO VALUE} [,STANDALONE {YES|NO|NO VALUE}])

示例:

test=# SELECT XMLROOT (xmlvarchar, VERSION '1.0', STANDALONE YES) AS "XMLROOT" FROM xmldata;
XMLROOT
------------------------------------------------------
<?xml version="1.0" standalone="yes"?><kes>aaa</kes>
<?xml version="1.0" standalone="yes"?><kes>bbb</kes>
<?xml version="1.0" standalone="yes"?><kes>ccc</kes>
(3 行记录)

XMLSEQUENCE

功能:

XMLSEQUENCE函数接受一个xml类型的XML实例,返回一个包含所有顶层XML节点的可变数组。

只能在oracle模式下

用法:

XMLSEQUENCE(xml_instance xml)

示例:

test=# select t.* from xmldata ,table(xmlsequence(extract(xmldata,'/kes/*'))) t ;
xml_data
-------------------
<sql>sql001</sql>
<rac>rac001</rac>
<sql>sql002</sql>
<rac>rac002</rac>
<sql>sql003</sql>
<rac>rac003</rac>
(6 行记录)

KingbaseES 原生XML系列四--XML通用函数的更多相关文章

  1. XML系列之--Linq操作带属性的XML(四)

    关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...

  2. BizTalk开发系列(十四) XML空白字符(WhiteSpace)

    最近在做一个BizTalk项目,对XML文件的处理很复杂.本来是想找有没有方法可以一次性去除XML文件中节点和属性的值的空格.但是找了很久没有看到相关的方法.如果有知道该方法的麻烦跟我讲一下:cbcy ...

  3. XML系列之--对电文格式XML的简单操作(三)

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  4. XML系列之--创建电文格式的XML(一)

    关于XML,学校那会,老师在口中仅仅提及,自己也未曾深入接触过,仅是些将最基本XML文件内容显示在web定义的表格中之类的简单操作,如今项目中的收发电文涉及到复杂XML的操作.趁此契机好好回顾下XML ...

  5. XML系列之--解析电文格式的XML(二)

    上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...

  6. XML的四种解析方法

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6646572.html  XML文档以层级标签的形式来组织数据,多用于配置文件.存储静态数据.交换数据.     ...

  7. 解析XML的四种方式

    四种操作xml的方式: SAX, DOM, JDOM , DOM4J的比较 1. 介绍 1)DOM(JAXP Crimson解析器)         DOM是用与平台和语言无关的方式表示XML文档的官 ...

  8. XML解析——Java中XML的四种解析方式

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...

  9. JAVA解析XML的四种方式

    java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...

  10. Java更新XML的四种常用方法简介

    本文简要的讨论了Java语言编程中更新XML文档的四种常用方法,并且分析这四种方法的优劣.其次,本文还对如何控制Java程序输出的XML文档的格式做了展开论述. JAXP是Java API for X ...

随机推荐

  1. JSP使用FileUpload上传文件设置setSizeMax后连接被重置

    今天在学习利用JSP+Servlet+FileUpload开发文件上传功能.在设置了上传文件最大限制为10M以后,选择了3M的pdf上传提交后连接被重置了... 我的代码: //设置上传单个文件的大小 ...

  2. web模块化

    CommonJS-----是一种后端js规范,是nodejs遵循的一种编写js模块的规范引入模块-------require('模块路径')定义模块 ------ exports.模块名= funct ...

  3. 【Azure Redis 缓存】应用中出现连接Redis服务错误(production.ERROR: Connection refused)的排查步骤

    问题描述 在PHP应用中,连接Redis的方法报错  RedisException(code: 0): Connection refused at /data/Redis/Connectors/Php ...

  4. 【Azure API 管理】APIM关闭开发者门户的办法

    问题描述 APIM默认提供了开发者门户,可以让用户体验如何来调用接口.但如果不想开发这个功能的情况下,是否有办法关闭呢? 问题解答 答案是:开发人员门户是没有办法关闭的.但是作为另一种的代替方案,如自 ...

  5. 【Azure 环境】Azure Key Vault 采用自签名证书,是否需要CA provider

    关于 Azure Key Vault 证书,密钥保管库证书支持适用于 x509 证书管理,它提供以下行为: 允许证书所有者通过密钥保管库创建过程或通过导入现有证书来创建证书. 包括自签名证书和证书颁发 ...

  6. 【Azure 应用服务】azure function powershell 调用 New-AzADServicePrincipal -DisplayName $sp -PasswordCredential $spCred

    问题描述 powershell 调用New-AzADServicePrincipal -DisplayName $sp -PasswordCredential $spCred,出现如下错误: Reso ...

  7. 容器与 Pod

    现在 Docker 的流行程度越来越高,越来越多的公司使用 Docker 打包和部署项目.但是也有很多公司只是追求新技术,将以前的单体应用直接打包为镜像,代码.配置方式等各方面保持不变,使用 Dock ...

  8. java数组案例

    数组:         数组就是用来存储一批同类型数据的内存区域(容器) 数组中的最大值实现方法:   数据拿到程序中去,用数组装起来. 定义一个变量,用于记录最大值.这个变量建议默认存储第一个元素作 ...

  9. 我和我的DBA之路

    这几天,突然想写写这些年的工作总结,毕业至今快20年的回顾. 想到20年前,在做毕业设计的时候,当时是学的机械工程类专业,因为带毕业设计的老师兼职企业有个门户网站的需求,而我又会做点网站设计,带的老师 ...

  10. acme.sh 免费泛解析证书生成

    环境准备 本篇文章使用的 ACME 客户端是基于 Docker 容器使用的,所以需要准备 Docker 运行环境.本文使用的是 CentOS 7.x 与 Docker CE - 19.03.13,且已 ...