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

人大金仓数据库KingbaseES xmlelement表达式使用技巧

原创 数据猿 2023-12-11
288


金仓数据库KingbaseES xmlelement表达式使用技巧

关键字:

KingbaseES、xmlelement、xml、人大金仓

xml简介

xml指可扩展标记语言,被用来设计传输和存储数据。xml 数据类型可以被用来存储 xml 数据。它比直接在一个 text 域中存储 xml 数据的优势在于,它会检查输入值的结构是不是良好,并且有支持函数用于在其上执行类型安全的操作。使用这种数据类型要求在安装时用 configure --with-libxml 选项编译。

有一组函数和类函数的表达式可以用来从 SQL 数据产生 XML 内容。它们特别适合于将查询结果格式化成 XML 文档以便于在客户端应用中处理,例如:xmlcomment、xmlconcat、和xmlelement函数等。下文详细介绍xmlelement表达式的使用。

二、xmlelement表达式

2.1 功能

Xmlelement表达式的功能为使用给定名称、属性和内容产生一个 XML 元素。

2.2 语法

xmlelement(name name [, xmlattributes(value [AS attname] [, ... ])] [, content, ...])

参数详解:

  • name:xml标签名称。
  • xmlattributes():设置xml属性。
  • value:属性值。
  • attname:属性名。如果属性值是一个列引用,则不需要指定一个显式的属性名,在这种情况下列的名字将被默认用于属性的名字。在其他情况下,属性必须被给定一个显式名称。
  • content:xml的内容。

2.3 使用

  • 仅仅设置xml标签名称:

test=# SELECT xmlelement(name kes);

xmlelement

------------

<kes/>

(1 行记录)

  • 设置xml的标签名和属性:

test=# SELECT xmlelement(name kes, xmlattributes('xyz' as bar));

xmlelement

------------------

<kes bar="xyz"/>

(1 行记录)

  • 设置xml的标签名、属性和内容:

test=# SELECT xmlelement(name kes, xmlattributes(current_date as bar), 'cont', 'ent');

xmlelement

-------------------------------------

<kes bar="2023-09-06">content</kes>

(1 行记录)

  • 不是合法 XML 名字的元素名和属性名将被逃逸,逃逸的方法是将违反的字符用序列_xHHHH_替换,其中HHHH是被替换字符的 Unicode 代码点的十六进制表示。例如:

test=# SELECT xmlelement(name "kes$bar", xmlattributes('xyz' as "a&b"));

xmlelement

----------------------------------

<kes_x0024_bar a_x0026_b="xyz"/>

(1 行记录)

  • 如果属性值是一个列引用,则不需要指定一个显式的属性名,在这种情况下列的名字将被默认用于属性的名字。在其他情况下,属性必须被给定一个显式名称。因此这个例子是合法的:

test=# CREATE TABLE test (a int, b int);

CREATE TABLE

test=# insert into test values(1,2);

INSERT 0 1

test=# SELECT xmlelement(name test, xmlattributes(a, b)) FROM test;

xmlelement

---------------------

<test a="1" b="2"/>

(1 行记录)

但是下面这些不合法:

SELECT xmlelement(name test, xmlattributes('constant'), a, b) FROM test;

SELECT xmlelement(name test, xmlattributes(func(a, b))) FROM test;

  • 如果指定了元素内容,它们将被根据其数据类型格式化。如果内容本身也是类型xml,就可以构建复杂的 XML 文档。例如:

test=# SELECT xmlelement(name kes, xmlattributes('xyz' as bar), xmlelement(name abc),xmlcomment('test'));

xmlelement

----------------------------------------

<kes bar="xyz"><abc/><!--test--></kes>

(1 行记录)

  • 将数据表的内容使用xmlelement映射为xml数据。

create table emp (employee_id int, manager_id int,first_name VARCHAR2(4000),salary int);

insert into emp values(100,null,'Steven',24000);

insert into emp values(121,100,'Adam',8200);

insert into emp values(186,121,'Julia',3400);

test=# select XMLElement(name employee,XMLElement(name id,employee_id),XMLElement(name name,first_name),XMLElement( name salary,salary)) as "result" from emp;

result

----------------------------------------------------------------------------

<employee><id>100</id><name>Steven</name><salary>24000</salary></employee>

<employee><id>121</id><name>Adam</name><salary>8200</salary></employee>

<employee><id>186</id><name>Julia</name><salary>3400</salary></employee>

(3 行记录)

参考文档:

《KingbaseES SQL语言参考手册》

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

评论