KingbaseES 原生XML系列五--XML关系表函数
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 行记录)
KINGBASE研究院
分类:
SQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!