Xpath SQL Server查询

时间:2012-01-26 16:52:57

标签: sql sql-server xml xpath

我想选择Type的值,其中下面的xml位于SQL Server 2005数据库的表中的xml类型列中。

<Something xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Id xmlns="http://something.com/">1921</Id>
  <Date xmlns="http://something.com/">1901-01-01T00:00:00Z</Date>
  <Schedule xmlns="http://something.com/">Region</Schedule>
  <Filters xmlns="http://something.com/">
    <Data>
      <Id>99999</Id>
      <Name>CS</Name>
      <Type>SomeType</Type>
    </Data>
  </Filters>
</Something>

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

;WITH XMLNAMESPACES ('http://something.com/' AS xn)
SELECT
    XmlType = XmlColumn.value('(Something/xn:Filters/xn:Data/xn:Type)[1]', 'varchar(50)') 
FROM 
    dbo.YourTable

基本上,您的根元素<Something>不是任何显式XML命名空间的一部分 - 但<Filters>下的任何元素都是 - 因此,您需要使用适当的XML命名空间前缀限定那些元素获取XML元素内的数据。