这正是我所期望的:

mysql> select ExtractValue("<x><a>1</a><b>2</b></x>", "concat(/x/a, /x/b)");
+---------------------------------------------------------------+
| ExtractValue("<x><a>1</a><b>2</b></x>", "concat(/x/a, /x/b)") |
+---------------------------------------------------------------+
| 12                                                            |
+---------------------------------------------------------------+
1 row in set (0.00 sec)

但是为什么返回“1”而不是“12”?
mysql> select ExtractValue("<x><a>1</a><b>2</b></x>", "concat(/x/a, ' ', /x/b)");
+--------------------------------------------------------------------+
| ExtractValue("<x><a>1</a><b>2</b></x>", "concat(/x/a, ' ', /x/b)") |
+--------------------------------------------------------------------+
| 1                                                                  |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)

最佳答案

这是一个已验证的错误。mysql的xpath连接运算符只考虑前两个参数,而应该考虑所有参数。
https://bugs.mysql.com/bug.php?id=71704
作为解决方法,您可以选择各个值并将其传递给常规concat函数:

select concat(ExtractValue("<x><a>1</a><b>2</b></x>", "/x/a"),' ',
  ExtractValue("<x><a>1</a><b>2</b></x>", "/x/b"));

09-25 18:30