网络编程
位置:首页>> 网络编程>> 数据库>> MySQL中XML数据的XPath支持(3)

MySQL中XML数据的XPath支持(3)

 来源:asp之家 发布时间:2009-12-15 21:57:00 

标签:mysql,xml,xpath,数据

在XPath表达式中使用变量

从MySQL 5.1.20开始,可以在XPath * 参数中使用变量,这样在传递参数时就更加灵活了,根据使用的语法不同,可以对变量实施弱检查或强检查。

弱检查变量

使用$@variable_name语法的变量不会检查类型,也不会检查之前是否给它分配过值,因此如果变量类型错误或未定义,MySQL不会报告任何警告或错误。例如,假设你将变量$@county写成$@conty了,由于拼写有误,这个错误的变量不会被赋予任何值,MySQL便会给它赋予一个“none”或“null”值。

在下面的例子中,我创建了一个变量@xml_cities,在文本节点中包含三个国家的城市,接着我创建了两个变量存储XPath信息,第一个SELECT查询显示@state_index_first变量和ExtractValue()函数的值,由于@state_index_first变量包含一个值“1”,//state[@state_index_first]表达式检索第一个城市的结果是“Chicago”。

第二个SELECT查询检索@state_index_second变量的值,以及ExtractValue()函数返回的结果,正如预期那样,它返回“Ocean City”。

最后一个SELECT语句有点问题,因为没有@state_index_third变量,ExtractValue()函数运行后无值返回,这样可能导致我们认为确实没有更多的城市。

mysql> SET @xml_cities = '<state value="Illinois">Chicago</state>

-> <state value="New Jersey">Ocean City</state>

-> <state value="Maryland">Baltimore</state>';

Query OK, 0 rows affected (0.21 sec)

mysql> SET @state_index_first = 1, @state_index_second = 2;

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @state_index_first, ExtractValue(@xml_cities,

-> '//state[$@state_index_first]') AS 'First City';

+--------------------+------------+

| @state_index_first | First City |

+--------------------+------------+

| 1 | Chicago |

+--------------------+------------+

1 row in set (0.00 sec)

mysql> SELECT @state_index_second, ExtractValue(@xml_cities,

-> '//state[$@state_index_second]') AS 'Second City';

+---------------------+-------------+

| @state_index_second | Second City |

+---------------------+-------------+

| 2 | Ocean City |

+---------------------+-------------+

1 row in set (0.00 sec)

mysql> SELECT @state_index_third, ExtractValue(@xml_cities,

-> '//state[$@state_index_third]') AS 'Third City';

+--------------------+------------+

| @state_index_third | Third City |

+--------------------+------------+

| NULL | |

+--------------------+------------+

1 row in set (0.00 sec)

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com