暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

金仓数据库KingbaseES 原生XML系列五--XML关系表函数

数据猿 2023-05-10
217

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 行记录)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论