T-SQL Xquery 存在方法return 无
T-SQL Xquery Exist Method return nothing
我有以下 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')
我有以下 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')