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



在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"。

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

<子>我意识到可以使用以下解决方案:concat(concat(/xml/a,/xml/b,/xml/c),/xml/c)但认真吗?

我猜你在找这样的东西:

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'

最新更新