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. Vmware中Linux通过NAT设置静态IP实现上网

    1.设置虚拟机上网方式为NAT 2.修改centos网络配置文件,我的是centos7.4,主要网关不能和主机设置的一致 [root@dylan-centos ~]# vi /etc/sysconfi ...

  2. Java集合框架学习(十一) Hashtable详解

    Hashtable介绍 1. 继承自Dictionary; 2. 线程安全: 3. 支持Iterator和Enumeration: 4. key和value都不可为null; 5. 一般用于多线程环境 ...

  3. 【LeetCode回溯算法#01】图解组合问题

    组合问题 力扣题目链接(opens new window) 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2 输出: [ [2 ...

  4. 2-Django之三板斧

    HttpResponse 返回字符串类型的数据 HttpResponse: 这是 Django 自带的类,用于构建基本的 HTTP 响应 我的app名称是demo,我们先按照正常的流程,在views中 ...

  5. 【Azure Spring Cloud】部署Azure spring cloud 失败

    问题描述 使用Azure CLI指令部署Azure Spring Cloud项目失败,错误消息提示没有安装"azure.storage.blob"模块 问题分析 根据错误提示,是p ...

  6. 【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包

    问题描述 部署在App Service For Windows 中的网站使用 Java Spring Boot + 静态文件 (浏览器端使用Vue.js 与服务器端Java Spring Boot交互 ...

  7. 探索浏览器录屏Web API 接口的应用前景与限制

    一.浏览器录屏Web API 接口的优点: 简化录屏流程:浏览器录屏Web API 接口可以直接在网页中调用,无需安装额外的插件或软件,简化了录屏的流程. 实时录制与传输:Web API 接口可以实时 ...

  8. [C++] 进程注入dll版

    目录 前言 前提 原理 代码 一些问题 前言 这几天在弄进程注入的事情,一直做不出来直接的进程注入,也就是不要dll的注入.因为dll注入据说容易触发杀软,但是弄了两天没弄出来.代码明明不报错,目标进 ...

  9. python爬虫中文转成一个字符串类型的unicode字符串(%u)的问题

    本文主要介绍某些爬虫在遇到%u627E%u4E0A%u95E8这种类似unicode编码的str类型数据时,无法直接使用decode('unicode-escape')方法来转成中文时的一个转码的解决 ...

  10. SSH原理与实践(二)

    主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 在上一篇文章[ssh原理与实践(一)]中我们详细介绍了SSH两种 ...