我有以下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标记之间是否有值,确实存在。但根据我的exist(),我的输出一直返回为0,表明它不存在。
我有什么东西不见了吗?我已经仔细检查了一下,以确保exist()的语法是正确的。如有任何帮助,我们将不胜感激!
是-您缺少在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')