Sql server 来自XML | SQL Server的数据

Sql server 来自XML | SQL Server的数据,sql-server,xml,Sql Server,Xml,下面是XML,我的表名是table1 <Details > <RelatedDetails> <Name>name 1</Name> <Position>User</Position> <Relationship>User</Relationship> <Salary>5000</Salary> <Type&

下面是XML,我的表名是table1

<Details >
  <RelatedDetails>   
    <Name>name 1</Name>   
    <Position>User</Position>    
    <Relationship>User</Relationship>
    <Salary>5000</Salary>
    <Type>Company</Type>
  </RelatedDetails>
  <RelatedDetails>   
    <Name>name 2</Name>   
    <Position>User</Position>    
    <Relationship>Owner</Relationship>
    <Salary>7000</Salary>
    <Type>Company</Type>
  </RelatedDetails>
  <RelatedDetails>   
    <Name>name 3</Name>   
    <Position>User</Position>    
    <Relationship>Director</Relationship>
    <Salary>2000</Salary>
    <Type>Company</Type>
  </RelatedDetails>
</Details>
我想在SQL Server中获取工资>6000的“name”值

请建议如何实现这一目标


理想情况下,我应该将“name 2”作为输出。

假设您的XML包含在SQL Server变量中:

DECLARE @Input XML = '<Details>
  <RelatedDetails>   
    <Name>name 1</Name>   
    <Position>User</Position>    
    <Relationship>User</Relationship>
    <Salary>5000</Salary>
    <Type>Company</Type>
  </RelatedDetails>
  <RelatedDetails>   
    <Name>name 2</Name>   
    <Position>User</Position>    
    <Relationship>Owner</Relationship>
    <Salary>7000</Salary>
    <Type>Company</Type>
  </RelatedDetails>
  <RelatedDetails>   
    <Name>name 3</Name>   
    <Position>User</Position>    
    <Relationship>Director</Relationship>
    <Salary>2000</Salary>
    <Type>Company</Type>
  </RelatedDetails>
</Details>'

到目前为止你试过什么?为什么不起作用?如果您没有进行任何研究,我建议您查看XQUERY,然后尝试并展示它们,如果您成功,或者将解决方案作为答案发布。我对此进行了改进,尽管不使用它会更简单。节点的开销相当大,并将XQUERY/Xpath直接放入.value中……感谢您的支持,但是我的ml中没有@inut标记
SELECT 
    XCol.value('(Name)[1]', 'varchar(25)')
FROM 
    @Input.nodes('/Details/RelatedDetails') AS XTbl(XCol)
WHERE
    XCol.value('(Salary)[1]', 'int') > 6000
select x.n.value('(Name)[1]', 'nvarchar(50)')
from @xml.nodes('/Details/RelatedDetails[Salary[text() > 6000]]') as x(n);