在MySQL中使用XPATH fn:concat ExtractValue不会处理两个以上的参数

时间:2013-05-30 14:04:10

标签: mysql xml xslt xpath

在MySQL ExtractValue函数的XPATH中使用XSLT fn:concat()函数时,将返回仅包含前两个参数的字符串。

例如:

SELECT ExtractValue("<xml><a>1</a><b>2</b><c>3</c></xml>", 'concat(/xml/a,/xml/b,/xml/c)')

这应该返回“123”,而是返回“12”。

这是一个错误还是我做错了什么?

<子> 我意识到可以使用以下解决方法: concat(concat(/xml/a,/xml/b,/xml/c),/xml/c) 不过实话说?

1 个答案:

答案 0 :(得分:-1)

我猜你正在寻找这样的东西:

SELECT ExtractValue("<xml><a>1</a><b>2</b><c>3</c></xml>", '//a | //b | //c')

或(更有可能)这个:

SELECT 
  ExtractValue("<xml><a>1</a><b>2</b><c>3</c></xml>", '//a') AS a,
  ExtractValue("<xml><a>1</a><b>2</b><c>3</c></xml>", '//b') AS b,
  ExtractValue("<xml><a>1</a><b>2</b><c>3</c></xml>", '//c') AS c

请注意,您尝试过的xpath函数concat将返回字符串的串联,如:

example: concat('foo', 'bar')
result : 'foo bar'