我想选择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>
答案 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元素内的数据。