[$ @ var-name]的含义在mysql ExtractValue()函数中使用

时间:2015-06-10 14:11:52

标签: mysql

@xml= '<a><b>X</b><b>Y</b></a>'; 
set @i=1,@j=2;
select extractvalue(@xml,'//b[$@i]');

我想知道$@在函数中使用的含义。

1 个答案:

答案 0 :(得分:1)

$@代表用户变量。见MySQL Documentation: User variables (weak checking)

首先,您发布的代码@xml= 'XY';不是有效的XML。

要解释一下,//b[$@i]是一个XPATH查询。因为$@i确实是一种变量插值。文档中的一个例子,

SET @xml = '<a><b>X</b><b>Y</b></a>';
SET @i =1;

然后执行SELECT ExtractValue(@xml, '//b[$@i]');返回X正弦它基本上说

选择第一个([1]索引)标记元素b。所以,'//b[$@i]'只是在说'//b[1]'