我有以下xquery部分,我正在尝试在我的t-sql脚本之外进行测试:
DECLARE @x XML
SELECT @x = N'<?xml version="1.0" encoding="utf-16"?>
<Root xmlns="http://www.w3.org">
<Header>
<Record>
<A99>
<A99_01_0>
<A99_01>TEST</A99_01>
<A99_02>TEST</A99_02>
<A99_03>TEST</A99_03>
</A99_01_0>
</A99>
</Record>
</Header>
</Root>
';
select @x.exist('//Header/Record/A99/A99_01_0/A99_01')
我只想检查A99_01标签之间是否有值。但是根据我的exists(),我的输出会一直回到0,表明它不存在。
有什么我想念的吗?我已经仔细检查以确保我对exists()的语法是正确的。任何帮助将不胜感激!
答案 0 :(得分:3)
是的 - 您错过了XML文档中定义的 XML命名空间!
SELECT @x = N'<?xml version="1.0" encoding="utf-16"?>
<Root xmlns="http://www.w3.org">
*************************
您需要将SELECT
更改为:
WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org')
SELECT
@x.exist('//Header/Record/A99/A99_01_0/A99_01')