【发布时间】:2017-12-05 23:47:10
【问题描述】:
我正在尝试找出供应商名称为 Herman 的城市。我们通过 Microsoft SQL Server Management Studio 使用 XPath。
我不是 CIS 专业的,我不知道从哪里开始。所以这就是我寻求帮助的原因......
我创建了下表:
CREATE TABLE Tb_Supplier(
XMLColumn XML)
GO
INSERT Tb_Supplier VALUES(
'<SuppliersList>
<Supplier name="Joe">
<City>Paris</City>
<Product name="Airplane"/>
<Product name="Milk"/>
<Product name="TV"/>
<Product name="Orange"/>
</Supplier>
<Supplier name="Herman">
<City>Chicago</City>
<Product name="Orange"/>
</Supplier>
<Supplier name="Bernstein">
<City>Madison</City>
<Product name="Truck"/>
<Product name="TV"/>
</Supplier>
<Supplier name="Hunter">
<City>Wausau</City>
</Supplier>
<Supplier name="Mayer">
<City>Madison</City>
</Supplier>
<Supplier name="Rosenfeld">
<City>Chicago</City>
<Product name="Computer"/>
<Product name="Book"/>
<Product name="Truck"/>
</Supplier>
</SuppliersList>');
输出应该显示:
<City>Chicago</City>
我通过以下方式让它工作:
SELECT XMLColumn.query('/SuppliersList/Supplier[@name="Herman"]/City')
FROM Tb_Suppliers
我有点掌握了一些东西。 目前我很难找到以下内容: 列出产品是电视,并且在麦迪逊提供。 显然输出将是因为它正在寻找电视。
到目前为止,我有这个,我不知道我做错了什么,因为这对我来说最有意义。
SELECT XMLColumn.query('/SuppliersList/Supplier/Product[@name="TV"]/../City[@name="Madison"]/../Product')
FROM Tb_Suppliers
【问题讨论】:
-
如果有的话,您尝试过什么?没有人会为你编写代码。
-
我什至不知道从哪里开始说实话。我不是 CIS 专业的,但我被困在这门课上,因为评论很好,除了 sql 的东西,我几乎掌握了所有东西。
-
不好告诉你怎么做,但我会给你一些提示。 msdn.microsoft.com/en-us/library/… /* 查找拥有卡车产品的供应商 */ SELECT XMLColumn.query('/SuppliersList/Supplier/Product[@name="Truck"]/..') from Tb_Supplier
-
请避免后续问题!如果最初的问题得到解决,您应该通过接受他最有帮助的答案来结束这个问题。然后将您的新问题作为新问题。这将拉动新的吸引力。没有人会在这里阅读您的编辑(我偶然发现它们......)简而言之:将过滤器谓词放在更高的节点而不是向后导航。
标签: sql-server sqlxml