3

在 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) 但是认真吗?

4

1 回答 1

-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

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

example: concat('foo', 'bar')
result : 'foo bar'
于 2013-06-20T22:28:23.580 回答