金仓数据库KingbaseES 原生XML系列一 -- XML构造函数

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

XML

功能:

从字符数据中生成一个xml类型的值。

用法:
xml( text )
示例:
test=# select xml(comm) ,sys_typeof( xml(comm)),comm from xmldata ;
   xml    | sys_typeof |   comm   
----------+------------+----------
 zhangsan | xml        | zhangsan
 lisi     | xml        | lisi
 wangwu   | xml        | wangwu
(3 行记录)

XMLPARSE

功能:

从字符数据中生成一个xml类型的值,可以使用函数xmlparse。

用法:
XMLPARSE ( { DOCUMENT | CONTENT } value)
示例:
-- DOCUMENT 字符生成xml格式,字符需要是xml标准格式
test=# select xmlparse(document xmlvarchar) from xmldata ;
    xmlparse    
----------------
 <kes>aaa</kes>
 <kes>bbb</kes>
 <kes>ccc</kes>
(3 行记录)

-- CONTENT 将字符生成xml格式的xml值
test=# select xmlparse(content comm) ,sys_typeof(xmlparse(content comm)) from xmldata ; 
 xmlparse | sys_typeof 
----------+------------
 zhangsan | xml
 lisi     | xml
 wangwu   | xml
(3 行记录)

XMLSERIALIZE

功能:

作为xmlparse逆操作,从xml产生一个字符串。

用法:
XMLSERIALIZE ( { DOCUMENT | CONTENT } value AS type )

type可以是 character、character varying或 text
示例:
test=# select xmlserialize(document xmldata as text),xmlserialize(document xmldata as varchar) from xmldata ;
                 xmlserialize                  |                 xmlserialize                  
-----------------------------------------------+-----------------------------------------------
 <kes><sql>sql001</sql><rac>rac001</rac></kes> | <kes><sql>sql001</sql><rac>rac001</rac></kes>
 <kes><sql>sql002</sql><rac>rac002</rac></kes> | <kes><sql>sql002</sql><rac>rac002</rac></kes>
 <kes><sql>sql003</sql><rac>rac003</rac></kes> | <kes><sql>sql003</sql><rac>rac003</rac></kes>
(3 行记录)

IS-DOCUMENT

功能:

如果参数 XML 值是一个正确的 XML 文档,则IS DOCUMENT返回真,如果不是则返回假

用法:
xml IS DOCUMENT
示例:
test=#  select (comm is document), comm ,(xmldata is document),xmldata from xmldata ;         
 ?column? |   comm   | ?column? |                    xmldata                    
----------+----------+----------+-----------------------------------------------
 f        | zhangsan | t        | <kes><sql>sql001</sql><rac>rac001</rac></kes>
 f        | lisi     | t        | <kes><sql>sql002</sql><rac>rac002</rac></kes>
 f        | wangwu   | t        | <kes><sql>sql003</sql><rac>rac003</rac></kes>
(3 行记录)

XML_IS_WELL_FORMED

功能:

检查一个text串是不是一个良构的 XML,返回一个布尔结果。

用法:
xml_is_well_formed(text)
示例:
test=# SELECT xml_is_well_formed('<abc>') , xml_is_well_formed('<abc/>');
 xml_is_well_formed | xml_is_well_formed 
--------------------+--------------------
 f                  | t
(1 行记录)

XML_IS_WELL_FORMED_CONTENT

功能:

检查一个text串是不是一个良构的 XML,返回一个布尔结果。

用法:
xml_is_well_formed_content(text)
示例:
test=# SELECT xml_is_well_formed_content('<abc>') , xml_is_well_formed_content('<abc/>');  
 xml_is_well_formed_content | xml_is_well_formed_content 
----------------------------+----------------------------
 f                          | t
(1 行记录)

XML_IS_WELL_FORMED_DOCUMENT

功能:

检查一个text串是不是一个良构的 XML,返回一个布尔结果。

用法:
xml_is_well_formed_document(text)
示例:
test=# SELECT xml_is_well_formed_document('<abc>') , xml_is_well_formed_document('<abc/>');
 xml_is_well_formed_document | xml_is_well_formed_document 
-----------------------------+-----------------------------
 f                           | t
(1 行记录)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值