MySQL中XML数据的XPath支持(3)
来源:asp之家 发布时间:2009-12-15 21:57:00
在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)


猜你喜欢
- 页面域关系:主页面a.html所属域A:www.aspxhome.com被iframe的页面b.html所属域B:www.cidianwan
- 看了cragle的《有没有必要将网站Div+Css重构?》的文章,有一些想法不说不快,我也在文章的评论里提到曾经开除过两个执着使用div技术
- 远程服务器配置可以使得数据库管理员在服务器以外的主机上连接到一个SQL Server实例,以便管理员在没有建立单据连接的情况下在其他的SQL
- 内容摘要:本文是一篇实例讲解的文章。作为一个普通的程序员,我深知,一个优秀的例程,对于正在学习编程的人是多么的有帮助。本文中使用的例程,是一
- CSS如何做细线表格?天天用Div,倒把CSS表格细线这个最基础的应用忘了。table { border-collapse:&nb
- 1.intersect为取多个查询结果的交集;2.查询两个基本时间段内表记录的SQL语句;select * from shengjibiao
- 在dreamweaver4中,你可以存储你自己设定的图片,链接,flash影片,颜色表,模板等等,组成这个站点的资产,这就是Assets面板
- 一个封装好的JavaScript拖动类,使用方便:<div id="idDrag" style="bor
- 最近刚接触了公司的服务器,使用的是Windows 2003 server + IIS 6.0 服务器,在使用无组件上传文件时产生这个错误时:
- JavaScript 中的并没有提供像 VBScript 里的 DateAdd 方法用于日
- CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和Firefox存在很大的解析差异,这里介绍一下兼容要点。常见兼容问题:1、DOCTY
- 以下为谷歌国际少年绘画大赛,小学1-3年级作品。看孩子们的logo创意,自愧呀! 彩色世界我们热爱温暖的阳光,“O”代表我们心中的太阳。我们
- 查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效
- 在学习asp过程中相信很多初学者对Sub与Function的用法有些疑惑,好像它们没什么区别都可以使用。呵呵,看了本文的介绍您就可以了解了S
- 原文:Unobtrusive Ajax。今天才看见的一个Presentation,是Jesse Skinner在06年10月发表的。虽然题目
- 昨天在W3C看到,6月10日发布了新的 HTML 5 草案(Working Draft)。粗略的读了一下它提供的 新版本说明文档 ,作了一点
- 这是写给web设计者和前端开发者的教程,我们将演示如何使用Photoshop创建按钮的sprite图,然后是如何使用jQurey打造动态渐变
- 在整个产品设计的过程中,视觉设计与交互设计的“工序”非常紧密,两者关系也是相辅相成,互相影响。而视觉界面作为最直接与用户交流的层面,如何把交
- 一般情况下TextArea区输入的文字数量是没有限制的,但是我们可以通过javascript限制表单的文字字数。如下javascript代码
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 21 - Classes part