sql server-T-sql Xquery Exist方法不返回任何内容



我有以下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')

最新更新