华为云云数据库GaussDBXML类型函数_云淘科技
xmlparse ( { DOCUMENT | CONTENT } value [wellformed])
描述:使用函数xmlparse, 来从字符数据产生xml类型的值。
参数:数据类型为text
返回值类型:xml
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
gaussdb=# SELECT XMLPARSE (DOCUMENT ' |
xmlconcat(xml[, …])
描述:将由单个XML值组成的列表串接成一个单独的值,该值包含一个XML的内容片段。其中空值会被忽略,并且只有当所有参数都为空时结果才为空。在兼容ORA数据库模式下,设置a_format_version值为10c和a_format_dev_version值为s2,增加了校验输入片段是否为非良构xml文本。
参数:数据类型为XML。
返回值类型:XML
注:示例2为兼容ORA数据库的语法示例。
示例1:
gaussdb=# set xmloption=content; SET gaussdb=# select XMLCONCAT(('foo'),('foo')) ; xmlconcat ------------------------------------------------------------------- foofoo (1 row) gaussdb=# select XMLCONCAT('abc>'); xmlconcat ----------- abc> (1 row)
示例2:
gaussdb=# set a_format_version='10c'; SET gaussdb=# set a_format_dev_version=s2; SET gaussdb=# set xmloption=content; SET gaussdb=# select XMLCONCAT(('foo'),('foo')) ; xmlconcat ------------------------------------------------------------------- foofoo (1 row) gaussdb=# select XMLCONCAT('abc>'); ERROR: invalid XML document LINE 1: SELECT XMLCONCAT('abc>'); DETAIL: line 1: Start tag expected, '<' not found CONTEXT: referenced column: xmlconcat
xmlagg(xml [order_by_clause])
描述:该函数是一个聚集函数、它将聚集函数调用的输入值串接起来,且支持跨行串接,order_by_clause详见SELECT。在兼容ORA数据库模式下,设置a_format_version值为10c和a_format_dev_version值为s2,数据库xmloption参数默认为content,当xmloption设置为document时,使用换行符串接多行xml。若xml声明中encoding属性值不为默认编码UTF-8时,聚集结果有xml声明。
参数:xml
返回值类型:xml
注:示例2为兼容ORA数据库的语法示例。
示例1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
gaussdb=# CREATE TABLE xmltest ( id int, data xml ); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'id' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. gaussdb=# INSERT INTO xmltest VALUES (1, 'one'); INSERT 0 1 gaussdb=# INSERT INTO xmltest VALUES (2, 'two'); INSERT 0 1 gaussdb=# SELECT xmlagg(data) FROM xmltest; xmlagg -------------------------------------- onetwo (1 row) |
示例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
gaussdb=# set xmloption=document; SET gaussdb=# SELECT xmlagg(data) FROM xmltest; xmlagg -------------------- one+ two (1 row) gaussdb=# DELETE FROM XMLTEST; DELETE 2 gaussdb=# INSERT INTO xmltest VALUES (1, 'one'); INSERT 0 1 gaussdb=# INSERT INTO xmltest VALUES (2, 'two'); INSERT 0 1 gaussdb=# SELECT xmlagg(data) FROM xmltest; xmlagg -------------------------------------------------------- one+ two (1 row) gaussdb=# SELECT xmlagg(data order by id desc) FROM xmltest; xmlagg -------------------------------------------------------- two+ one (1 row) |
xmlelement( [ ENTITYESCAPING | NOENTITYESCAPING ] { [ NAME ] element_name | EVALNAME element_name } [ , xmlattributes( [ ENTITYESCAPING | NOENTITYESCAPING ] value [ [ AS ] attname | AS EVALNAME attname ] [ , … ] ) ] [ , content [ [ AS ] alias ] [ , … ] ] )
描述:使用给定的名称、属性和内容产生一个XML元素。
返回值类型:xml
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
gaussdb=# SELECT xmlelement(name foo); xmlelement ------------ 在ORA兼容模式下: 1.xmlelement中默认不设置或者设置ENTITYESCAPING关键字时,xmlelement的内容中的保留字符将被转义: SELECT xmlelement("entityescaping", 'a$><&"b'); xmlelement ------------------------------------------------------------- <entityescaping>a$><&"b</entityescaping> (1 row) SELECT xmlelement(entityescaping "entityescaping", 'a$><&"b'); xmlelement ------------------------------------------------------------- <entityescaping>a$><&"b</entityescaping> (1 row) 2.xmlelement中设置NOENTITYESCAPING关键字时,xmlelement的内容中的保留字符将不会被转义: SELECT xmlelement(noentityescaping "entityescaping", 'a$><&"b'); xmlelement ---------------------------------------------- <entityescaping>a$><&"b</entityescaping> (1 row) 3.xmlelement中对内容使用[as] alias声明别名时,内容值类型必须为xml类型: SELECT xmlelement("entityescaping", '' b); ERROR: argument of XMLELEMENT must be type xml, not type unknown LINE 1: SELECT xmlelement("entityescaping", '' b); ^ CONTEXT: referenced column: xmlelement SELECT xmlelement("entityescaping", '' as b); ERROR: argument of XMLELEMENT must be type xml, not type unknown LINE 1: SELECT xmlelement("entityescaping", '' as b); ^ CONTEXT: referenced column: xmlelement SELECT xmlelement("entityescaping", xml('') b); xmlelement --------------------------------------------- <entityescaping></entityescaping> (1 row) SELECT xmlelement("entityescaping", xml('') as b); xmlelement --------------------------------------------- <entityescaping></entityescaping> (1 row) 4.xmlattributes中默认不设置或者设置ENTITYESCAPING关键字时,xmlattributes的内容中的保留字符将被转义: SELECT xmlelement("entityescaping", xmlattributes('entityescaping' "entityescaping")); xmlelement --------------------------------------------------------------- <entityescaping entityescaping="entityescaping<>"/> (1 row) SELECT xmlelement(name "entityescaping", xmlattributes(entityescaping 'entityescaping' "entityescaping")); xmlelement --------------------------------------------------------------- <entityescaping entityescaping="entityescaping<>"/> (1 row) 5.xmlattributes中设置NOENTITYESCAPING关键字时,xmlattributes的内容中的保留字符将不会被转义: SELECT xmlelement("entityescaping", xmlattributes(noentityescaping 'entityescaping' "entityescaping")); xmlelement --------------------------------------------------------- <entityescaping entityescaping="entityescaping"/> (1 row) |
xmlelement和xmlattributes的name字段赋NULL时,行为与O不一致。xmlelement的name字段赋NULL时,结果显示name信息为空,且不显示属性信息。xmlattributes的name字段赋NULL时,不显示属性信息。
设置如下两个参数后,xmlelement的内容转义规则为ORA兼容,未设置时xmlelement的内容转义规则为PG兼容。
1 2 |
set a_format_version='10c'; set a_format_dev_version=s2; |
父主题: 函数和操作符
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家