WEB开发网
开发学院数据库DB2 DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的... 阅读

DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的最佳实践,第 3 部分:如何高效并有效率的查询 XML 数据

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: 如果你更喜欢在一个单独的行中获得每个 partyId,这可以通过在清单 24 中显示的 XMLTABLE 函数实现:清单 24. 每行一个 partyId 值selectX.*fromtrades,XMLTABLE('$TRADEDOC/FpML/party'COLUMNSPar

如果你更喜欢在一个单独的行中获得每个 partyId,这可以通过在清单 24 中显示的 XMLTABLE 函数实现:


清单 24. 每行一个 partyId 值

select X.* from 
 trades, 
   XMLTABLE('$TRADEDOC/FpML/party' 
     COLUMNS 
     PartyId  Varchar(20) PATH 'partyId') as X;

结果集:

510026 
 67781 
 510026 
 99114 
 99114 
 67781 
 510026 
 67781 
 99114 
 67781

提示:通常情况下,如果你需要联合关系型和 XML 数据,那么在大多数情况下 SQL/XML 是最佳选择。尤其是,SQL/XML 是允许 XML 数据使用参数标签的一个选择。如果你有 XML-only 应用程序,单独的 XQuery 是一个强大的选择,而且可以用内置 SQL 来允许全文本查询和 UDFs 引用。

涉及 XML 数据的连接查询

提示:SQL/XML 谓词 XMLEXISTS 可以很容易连接 XML 数据和关系型数据。下面的例子使用一个 XMLTABLE 函数来选择交易在存款和取款期间它们的资本总量。这同时也获取这些交易的货币符号并用于和 CURRENCIES 表的关系型 SYMBOL 列来进行连接。最后,通过这个符号的流通值得到一个美元计数的本金来乘以存款的本金。这个查询使用 XMLEXISTS 来在一个关系值(CURRENCIES.SYMBOL)和一个 XML 值(/FpML/trade/termDeposit/principal/currency)执行一个连接。关系型列 SYMBOL 作为 $SYMBOL 在 XMLEXISTS 谓词中被参考:


清单 25. 用 SQL/XML 连接关系型数据和 XML 数据
select t.tradeid, c.symbol, c.USDvalue * tx.amount as principal_value_USD 
 from trades t, currencies c, 
 xmltable('$TRADEDOC/FpML/trade/termDeposit/principal' 
     COLUMNS 
     amount  double   path 'amount') as tx 
 where 
 xmlexists(' 
    $TRADEDOC/FpML/trade/termDeposit/principal[currency = $SYMBOL]);

上一页  3 4 5 6 7 8 9 10  下一页

Tags:DB 最佳 实践

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接