怎么做SQL多个表查询?
展开全部
示例 在检索数据时,用 rowpattern 标识 XML 文档中决定行的节点。rowpattern 用 MSXML XPath 实现中使用的 XPath 模式语言表示。例如,如果模式以元素或特性结束,则将为 rowpattern 选定的每个元素或特性节点创建一行。 flags 值提供默认映射。在 SchemaDeclaration 中如果没有指定 ColPattern,则使用 flags 参数所指定的映射。如果在 SchemaDeclaration 中指定了 ColPattern,则忽略 flags 值。指定的 ColPattern 确定映射(attribute-centric 或 element-centric),还确定在处理溢出/ 未用完数据时的行为。 A. 执行带 OPENXML 的简单 SELECT 语句 下例中的 XML 文档由 <Customer>、<Order> 和 <OrderDetail> 元素组成。OPENXML 语句从 XML 文档中检索两列行集(CustomerID 和 ContactName)中的客户信息。 首先调用 sp_xml_preparedocument 存储过程以获得文档句柄。此文档句柄传递到 OPENXML。 在 OPENXML 语句中: rowpattern (/ROOT/Customer) 标识要处理的 <Customer> 节点。 flags 参数值设置为 1 表示 attribute-centric 映射。因此,XML 特性映射到在 SchemaDeclaration 中定义的行集中的列。 在 SchemaDeclaration 中(在 WITH 子句中),指定的 ColName 值与相应的 XML 特性名相匹配。因此,在 SchemaDeclaration 中不指定 ColPattern 参数。 最后 SELECT 语句检索 OPENXML 所提供的行集中的所有列。 DECLARE @idoc int DECLARE @doc varchar(1000) SET @doc =' <ROOT> <Customer CustomerID="VINET" ContactName="Paul Henriot"> <Order OrderID="10248" CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00: 00"> <OrderDetail ProductID="11" Quantity="12"/> <OrderDetail ProductID="42" Quantity="10"/> </Order> </Customer> <Customer CustomerID="LILAS" ContactName="Carlos Gonzlez"> <Order OrderID="10283" CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00: 00"> <OrderDetail ProductID="72" Quantity="3"/> </Order> </Customer> </ROOT>' -- Create an internal representation of the XML document. EXEC sp_xml_preparedocument @idoc OUTPUT, @doc -- Execute a SELECT statement using OPENXML rowset provider. SELECT * FROM OPENXML (@idoc, '/ROOT/Customer',1) WITH (CustomerID varchar(10), ContactName varchar(20)) EXEC sp_xml_removedocument @idoc 结果如下: CustomerID ContactName ---------- -------------------- VINET Paul Henriot LILAS Carlos Gonzlez 如果在 flags 设置为 2 时(表示 element-centric 映射)执行上述 SELECT 语句,两个客户的 CustomerID 和 ContactName 值将作为 NULL 值返回,因为 <Customer> 元素没有任何子元素。 如果在 XML 文档中,<CustomerID> 和 <ContactName> 是子元素,则 element-centric 映射将检索值。 DECLARE @idoc int DECLARE @doc varchar(1000) SET @doc =' <ROOT> <Customer> <CustomerID>VINET</CustomerID> <ContactName>Paul Henriot</ContactName> <Order OrderID="10248" CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00: 00"> <OrderDetail ProductID="11" Quantity="12"/> <OrderDetail ProductID="42" Quantity="10"/> </Order> </Customer> <Customer> <CustomerID>LILAS</CustomerID> <ContactName>Carlos Gonzlez</ContactName> <Order OrderID="10283" CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00: 00"> <OrderDetail ProductID="72" Quantity="3"/> </Order> </Customer> </ROOT>' -- Create an internal representation of the XML document. EXEC sp_xml_preparedocument @idoc OUTPUT, @doc -- Execute a SELECT statement using OPENXML rowset provider. SELECT * FROM OPENXML (@idoc, '/ROOT/Customer',2) WITH (CustomerID varchar(10), ContactName varchar(20)) EXEC sp_xml_removedocument @idoc 结果如下: CustomerID ContactName ---------- -------------------- VINET Paul Henriot LILAS Carlos Gonzlez Top 5楼 xiaokun111(网语飘飘) 回复于 2006-03-15 14:48:35 得分 0 谢谢 hglhyy(為人民币服务!) ,好复杂,看的不太明白。 我有这样格式的xml文件若干,在不访问数据库的情况下 在本地将数据按照 select a.a1,b.b1,c.c1 from '1.xml' a ,'2.xml' b,'3.xml' c where a.id = b.id 这样的格式查询应该怎么写? <?xml version="1.0" standalone="yes"?> <DATAPACKET Version="2.0"> <METADATA><FIELDS> <FIELD attrname="ID" fieldtype="i4" readonly="true" SUBTYPE="Autoinc"/> <FIELD attrname="aaa" fieldtype="string" WIDTH="50"/> <FIELD attrname="bbb" fieldtype="string" WIDTH="50"/> <FIELD attrname="ccc" fieldtype="string" WIDTH="50"/> <FIELD attrname="ddd" fieldtype="string" WIDTH="50"/> </FIELDS><PARAMS/> </METADATA><ROWDATA> <ROW ID="1" aaa="1111" bbb="2222" ccc="3333" ddd="4444"/> <ROW ID="2" aaa="1111" bbb="abc" ccc="sdf" ddd="ggg"/> <ROW ID="3" aaa="1111" bbb="yyy" ccc="uuu" ddd="ppp"/> <ROW ID="4" aaa="1111" bbb="sdww" ccc="hhh" ddd="llk"/> <ROW ID="5" aaa="1111" bbb="gfgf" ccc="nnn" ddd="vvv"/> <ROW ID="6" aaa="2222" bbb="qwe" ccc="rrr" ddd="g"/> <ROW ID="7" aaa="2222" bbb="ere" ccc="dd" ddd="HHH"/> <ROW ID="8" aaa="3333" bbb="4444" ccc="5555" ddd="6666"/> <ROW ID="9" aaa="3333" bbb="3333" ccc="eree" ddd="rrrr"/> </ROWDATA></DATAPACKET> Top
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询