这正是我所期望的:
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"));