我使用了一个相当简单的Xpath查询(见下文)查询其值都遵循例子(低于)的形式的SQL Server 2008数据库列返回NULL。对于所有行,我的查询返回NULL
,而不是example
属性(例如“VALUE”)的值,即使我为查询的每一行都定义了example
属性。的XPath有效的XPath表达式
我试过在我的Xquery表达式中声明xsd
和xsi
命名空间,并从多个不同的属性名称中进行选择,但都没有任何效果。我错过了什么?
查询:
select ColumnName.value('(/RootNode/@example)[1]', 'nvarchar(15)') [Result]
from TableName
XML样本节点(实际XML包含有更多的属性,这些属性我省略):
<RootNode xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://intranet"
example="VALUE">
<IsValid>true</IsValid>
</RootNode>
使用名称空间,具有相同尝试查询结果:
select ColumnName.value('
declare namespace xsd="http://www.w3.org/2001/XMLSchema";
declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance";
(/RootNode/@example)[1]', 'nvarchar(15)') [Result]
from TableName
我没有看到你提到的查询的命名空间。不'xsi'或'xsd',但默认设置一个,通过'http:// intranet' – 2013-04-22 18:55:08
@StenPetrov我尝试添加的,但它并没有区别,所以我删除他们 – Dov 2013-04-22 18:57:55
'xsd'和'xsi'赢得”不同,默认的命名空间会。我也有麻烦也破坏你的xpath。看起来你正在寻找'IsValid'作为具有'@ example'的'RootNode',这将是'// RootNode [@example]/IsValid' – 2013-04-22 19:02:15