MariaDB EXTRACTVALUE() 函数使用指南
在 MariaDB 中,EXTRACTVALUE()
是一个内置函数,它根据给定的路径从给定的 XML 片段中提取值。
MariaDB UPDATEXML()
语法
这里是 MariaDB UPDATEXML()
的语法:
UPDATEXML(xml_frag, xpath_expr)
参数
xml_frag
- 必需的。一个作为字符串的 XML 片段。
- 如果您提供了一个非法的 XML 片段,MariaDB 将给出一个警告:
Warning (Code 1525): Incorrect XML value: 'parse error at line 1 pos 11: unexpected END-OF-INPUT'
。 xpath_expr
- 必需的。需要提取值的 XML 路径表达式。
- 如果这是一个非法的 XPATH 值,MariaDB 将报告一个错误:
ERROR 1105 (HY000): XPATH syntax error: ')'
。
如果您提供了错误数量的参数,MariaDB 将报告一个错误: ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXTRACTVALUE'
。
返回值
MariaDB UPDATEXML()
函数返回一个字符串,它是在 XML 片段中的指定 XPATH 路径上的文本值。它只返回 XPATH 路径的值,不返回节点。
如果 XML 片段中不存在指定的 XPATH 路径,UPDATEXML()
将返回一个空字符串 ''
。
如果任意一个参数为 NULL
, UPDATEXML()
函数将返回 NULL
:
MariaDB UPDATEXML()
示例
这里先定义个 XML 片段以供演示:
SET @xml = '
<user>
<id>123456789</id>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>
';
基本示例
这个示例展示了 MariaDB UPDATEXML()
函数的基本用法:
SELECT
EXTRACTVALUE(@xml, '/user/id') id,
EXTRACTVALUE(@xml, '/user/name') name,
EXTRACTVALUE(@xml, '/user/age') age;
输出:
+-----------+-------+------+
| id | name | age |
+-----------+-------+------+
| 123456789 | Alice | 15 |
+-----------+-------+------+
文本值
MariaDB UPDATEXML()
函数只返回 XPATH 路径中的文本值,不包含子节点。
SELECT EXTRACTVALUE(@xml, '/user/hobbies') hobbies;
输出:
+---------+
| hobbies |
+---------+
| Piano |
+---------+
在本例中,XPath 是 /user/hobbies
,虽然其包含子节点 Piano<hobby>Football</hobby>
,但是该函数只返回了文本值。
这等效于您直接在 XPATH 表达式中使用 text()
,如下:
SELECT EXTRACTVALUE(@xml, '/user/hobbies/text()') hobbies;
输出:
+---------+
| hobbies |
+---------+
| Piano |
+---------+
无匹配
如果 XML 片段中不存在指定的 XPATH 路径,UPDATEXML()
将返回一个空字符串 ''
。
SELECT EXTRACTVALUE(@xml, '/user/gender');
输出:
+------------------------------------+
| EXTRACTVALUE(@xml, '/user/gender') |
+------------------------------------+
| |
+------------------------------------+
结论
在 MariaDB 中,EXTRACTVALUE()
是一个内置函数,它根据给定的路径从给定的 XML 片段中提取值。