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')