理解DB2 9中新的查询:XQuery(2)

http://www.itjxue.com  2015-07-17 21:29  来源:未知  点击次数: 

  构建一个可视化 XQuery

 

  有了新的 XQuery 网格,您将创建一个简单的包含一些条件的查询。

  展开 Constructors 类别,将一个新的 Element 拖放到网格上。对于拖放到网格上的每个项目,都可以在它右边看到一个 Step Into 图标。单击 new_element 的这个图标。

  将该元素的 Name 改为 toronto(见图 2)。不用关心 Attributes。 拖放 Element Value 下的 name 节点。注意,name 节点现在也有一个 Step Into 图标。单击该图标。

  图 2. XML 元素

  图 2. XML 元素

  在 Visual Builder 中,每当单击 Step Into,就会打开相应项目所特有的一个子页面。对于 XML 节点,它打开 For、Let、Where、Order by、Return diagram 或 FLWOR。这个图基本上相当于 SQL 中的 SELECT-FROM-WHERE 子句,它允许您定义查询的选择标准。

  Workbench 自动为 FLWOR 语句所需的绑定变量赋值,不过可以改变它的值。在这个例子中,它被命名为 name0。默认情况下,这个例子中的 Sequence 和 Return 值都是 name 节点。您只需定义条件。为此,展开左侧的 Functions 类别,从下拉菜单中选择 String Functions,如果该项还没有被选中的话。您有很多内建的函数可以选择,因此在 WHERE 子句时有很多选择余地。这个例子的目标是选择来自 Toronto 的所有客户。最直接的方法是将 city 节点拖放到 Operand 1 下,选择 = 作为 Operator,键入 Toronto 作为 Operand 2。还可以使用 match() 函数来定义一个模式,或者混合任意数量的字符串函数来创建更明确的标准。为简单起见,拖出 contains() 函数并将它放在 Operand 1 下(见图 3)。

  图 3. 包含 contains() 函数的 FLWOR

  图 3. 包含 contains() 函数的 FLWOR

  由于 contains() 函数返回 True 或 False,因此不需要再指定一个操作数。单击该函数对应的 Step Into,定义该函数的参数。contains() 函数带两个参数:string 和 substring。将 city 节点拖到 string 参数上。在 substring 旁边输入 onto。这将选出包含字母 onto(全部为小写)的所有城市。这个步骤类似于 SQL 中的 LIKE '%onto%'。

  图 4. 定义 contains() 函数

  图 4. 定义 contains() 函数

  在该窗口的右上角,可以看到一个 Step Out 图标。单击该图标,或者从下拉菜单中选择 OK,进入到上一级。在 For Logic 定义中,增加一个字段。将 phone 元素拖放到 Return 网格上的 name 下。然后再次单击 Step Out。

  再次单击 Step Out,返回到 root 级节点。在这里可以继续添加节点。现在,运行一下查询,看看结果。在右上角的图标上单击右键,从下拉菜单中选择 Run...,或者从主菜单中选择 Run → Run...。

  这里还有一次机会将 XML 列与一个定义文档相关联,但是由于它已经被正确地关联了,因此只需单击 Finish。在 Data Output 视图中,应该可以看到 ...。 单击省略号查看整个结果集。

  您可以查看两种格式的结果:XML Tree (见图 5) 或 Source,后者是一种无格式文本转储。在这个简单的例子中,所有结果都被收集在一个根节点下,包括任何重复的客户。但是,通过较小的调整,就可以改变节点层次,增加附加字段,删除重复的行,或者增加聚合函数。

  图 5. 示例 XQuery 的结果

  图 5. 示例 XQuery 的结果

  还可以对一个外部文件执行 Save As... 命令。实际上,如果单击 Save As 并保存到 demo.xml,可以在 Web 浏览器中打开这个文件,并看到包含查询结果的一个基本的(但是不完全是格式良好的)XML 文档。

(责任编辑:IT教学网)

更多

推荐编程综合文章