KingbaseES 原生XML系列五--XML关系表函数(QUERY_TO_XML,TABLE_TO_XML,XMLTABLE)

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函数简介

QUERY_TO_XML

功能:

query_to_xml执行由参数query传递的查询并且映射结果集.

用法:

query_to_xml(query text, nulls boolean, tableforest boolean, targetns text)

示例:

test=#  select * from query_to_xml('select id , comm from xmldata' ,true ,true , 'kes') ;
query_to_xml
-------------------------------------------------------------------------
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>1</id> +
<comm>zhangsan</comm> +
</row> +
+
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>2</id> +
<comm>lisi</comm> +
</row> +
+
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>3</id> +
<comm>wangwu</comm> +
</row> +
+ (1 行记录) test=# select * from query_to_xml('select id , comm from xmldata' ,false ,true , 'kes') ;
query_to_xml
-------------------------------------------------------------------------
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>1</id> +
<comm>zhangsan</comm> +
</row> +
+
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>2</id> +
<comm>lisi</comm> +
</row> +
+
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>3</id> +
<comm>wangwu</comm> +
</row> +
+ (1 行记录) test=# select * from query_to_xml('select id , comm from xmldata' ,true ,false , 'kes') ;
query_to_xml
---------------------------------------------------------------------------
<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
+
<row> +
<id>1</id> +
<comm>zhangsan</comm> +
</row> +
+
<row> +
<id>2</id> +
<comm>lisi</comm> +
</row> +
+
<row> +
<id>3</id> +
<comm>wangwu</comm> +
</row> +
+
</table> + (1 行记录)

TABLE_TO_XML

功能:

table_to_xml映射由参数tbl传递的命名表的内容。regclass类型接受使用常见标记标识表的字符串,包括可选的模式限定和双引号。

用法:

table_to_xml(tbl regclass, nulls boolean, tableforest boolean, targetns text)

示例:

test=#  select * from tt;
id | name
----+------
1 | a
0 | b
1 | a
0 | A
1 | a
(5 行记录) test=# select * from table_to_xml('tt' , true , true , 'kes');
table_to_xml
------------------------------------------------------------------------
<tt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>1</id> +
<name>a</name> +
</tt> +
+
<tt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>0</id> +
<name>b</name> +
</tt> +
+
<tt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>1</id> +
<name>a</name> +
</tt> +
+
<tt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>0</id> +
<name>A</name> +
</tt> +
+
<tt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
<id>1</id> +
<name>a</name> +
</tt> +
+ (1 行记录) test=# select * from table_to_xml('tt' , true , false , 'kes');
table_to_xml
------------------------------------------------------------------------
<tt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="kes">+
+
<row> +
<id>1</id> +
<name>a</name> +
</row> +
+
<row> +
<id>0</id> +
<name>b</name> +
</row> +
+
<row> +
<id>1</id> +
<name>a</name> +
</row> +
+
<row> +
<id>0</id> +
<name>A</name> +
</row> +
+
<row> +
<id>1</id> +
<name>a</name> +
</row> +
+
</tt> + (1 行记录)

XMLTABLE

功能:

XMLTable将 XQuery 评估的结果映射到相关的行和列。

用法:

XMLTABLE([XML_namespaces_clause,] XQuery_string XMLTABLE_option)
XMLnamespaces_clause:
XMLNAMESPACES({[string AS identifier|DEFAULT sting]}[,...])
**注意:** 您最多可以指定一个DEFAULT string子句。
XMLTABLE_options:
[XML_passing_clause][RETURNING SEQUENCE BY REF][COLUMN XML_table_column [,...]]
XML_passing_clause:
PASSING [BY VALUE] (expr [ as indentifier ])[,...]
XML_table_column:
column {FOR ORDINALITY|{datatype|XMLTYPE[(SEQUNCE) BY REF ]}[PATH string][DEFALUT]}

示例:

test=# select t.* from xmldata , xmltable('/kes' passing  xmldata columns c1 text path 'sql' , c2 text path 'rac') t ;
c1 | c2
--------+--------
sql001 | rac001
sql002 | rac002
sql003 | rac003
(3 行记录)

KingbaseES 原生XML系列五--XML关系表函数的更多相关文章

  1. struts2官方 中文教程 系列五:处理表单

    先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单  即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...

  2. SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

    原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...

  3. eBPF监控工具bcc系列五工具funccount

    eBPF监控工具bcc系列五工具funccount funccount函数可以通过匹配来跟踪函数,tracepoints 或USDT探针.例如所有以vfs_ 开头的内核函数. ./funccount ...

  4. 使用XML的五种场合,XML基本规则,XML的术语,结构与语法

    在很多研讨会和培训班上我遇到过许多人,他们还不明白为什么要使用XML也不知道如何 在他们的应用中使用XML.一些来自诸如Gartner公司的报告建议说,商业公司不能再做 局外人了,不能对XML置之不理 ...

  5. SGML、HTML、XML、XHTML的关系

    我们先看看它们的历史起源: SGML--1986年国际标准化组织出版发布了一个信息管理方面的国际标准(ISO 8879:1986信息处理). HTML 2.0--1995年11月作为RFC 1866发 ...

  6. maven系列--settings.xml

    安装maven,会有一份settings.xml文件,我们可以理解这份文件就是用来管理本地maven的一系列东西的.这里我先贴出一份完整的原始xml. <?xml version="1 ...

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

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

  8. Mysql系列五:数据库分库分表中间件mycat的安装和mycat配置详解

    一.mycat的安装 环境准备:准备一台虚拟机192.168.152.128 1. 下载mycat cd /softwarewget http:-linux.tar.gz 2. 解压mycat tar ...

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

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

  10. 比較全的XML系列工具 能够轻松实现排版、转换和打印!

    XML系列 --------------------------------------------------------------------------------1.Xsl Formatte ...

随机推荐

  1. 「源码分析」CopyOnWriteArrayList 中的隐藏的知识,你Get了吗?

    点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 前言 ...

  2. win32 - EnumDisplayDevices和EnumDisplayMonitors的使用

    EnumDisplayDevices枚举适配器 EnumDisplayMonitors枚举监视器 #pragma comment(lib, "dxva2.lib") #includ ...

  3. Redis原理再学习02:数据结构-动态字符串sds

    Redis原理再学习:动态字符串sds 字符 字符就是英文里的一个一个英文字母,比如:a.中文里的单个汉字,比如:好. 字符串就是多个字母或多个汉字组成,比如字符串:redis,中文字符串:你好吗. ...

  4. git tag 常用操作-创建、查看、推送、删除等

    创建tag 1.创建tag: git tag -a v0.0.1 或者 对某一提交的信息打tag标签,末尾是一个commit id git tag -a v0.0.1 cc16905 2.创建tag带 ...

  5. Qt+ECharts开发笔记(一):ECharts介绍、下载和Qt调用ECharts基础柱状图Demo

    前言   使用Qt开发大数据可视化看板,基于Qt使用QWidget或者QML是很难达到ECharts大数据看板的效果,所以使用Qt来制作.   核心思想   每一个ECharts图表使用一个无边框的Q ...

  6. 参数替换xargs

    由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔为参数 示例: 创建10个用户 echo user{ ...

  7. django中如果不是第一次迁移的时候就配置AUTH_USER_MODEL(用来告知django认证系统识别我们自定义的模型类),那么该如何解决才能让django的认证系统识别且不会报未知错误?

    Django认证系统中提供的用户模型类及方法很方便,我们可以使用这个模型类,但是字段有些无法满足项目需求,如还需要保存用户的手机号,需要给模型类添加额外的字段. Django提供了django.con ...

  8. linux系统优化命令--day03

    用户管理与文件权限 给普通用户授权 root 用户 修改/etc/sudoers文件,文件非常重要, 不可以随意更改 vim /etc/sudoers 如果想要给用户赋予权限,我们要使用这个命令 vi ...

  9. django中update_or_create()

    update_or_create()方法中有一个defaults参数 模型字段会根据查询条件进行查询,如果查询到了,那么就用defaults对应的值去更新字段,如果没有查到就用defaults对应的值 ...

  10. 【LeetCode链表#6】移除链表元素

    移除链表元素 题目 力扣题目链接(opens new window) 题意:删除链表中等于给定值 val 的所有节点. 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 ...