SQL 服务器删除名称空间默认值

SQL Server remove namespaces default

我在 sql 2008 服务器上使用 Xquery,结果包含自动生成的命名空间前缀(例如 p1 :)。我正在使用默认命名空间。

如何删除它们?

示例/流程:

1-

SET @ROOMLIST='
          <RoomList>
           <Root xmlns="http://zzz.yyy.com" >
             <RoomInfo>
                <AdultNum>2</AdultNum>
                <ChildNum>2</ChildNum>
                <ChildAges>
                   <ChildAge age="1"/>
                  <ChildAge age="12"/>
                </ChildAges>
             </RoomInfo>
          </Root>
      </RoomList>'

2-SQL查询:

declare @rt table (roomno int, Can_Adl int, Can_Chd int, ChildAges xml)
;WITH XMLNAMESPACES(DEFAULT 'http://zzz.yyy.com')
    insert into @rt (Can_Adl,Can_Chd,ChildAges)
    select  r.value('(AdultNum/text())[1]','int') as CAN_ADL,
            r.value('(ChildNum/text())[1]','int') as CAN_CHD,
            r.query('ChildAges') as ChildAges

    from @ROOMLIST.nodes('//RoomInfo') as t(r)
    outer apply (select t.r.query('ChildAges') as c) qlo

3- 结果:

<p1:ChildAges xmlns:p1="http://zzz.yyy.com">
   <p1:ChildAge age="1" />
   <p1:ChildAge age="12" />
</p1:ChildAges>

我想得到:

<ChildAges xmlns="http://zzz.yyy.com">
   <ChildAge age="1" />
   <ChildAge age="12" />
</ChildAges>

我得到了解决方案:

   r.query('declare default element namespace 
   "http://zzz.yyy.com";.') as ChildAges

SQL查询:

   ;WITH XMLNAMESPACES(DEFAULT 'http://zzz.yyy.com' )
    insert into @rt (Can_Adl,Can_Chd,ChildAges)

    select  r.value('(//AdultNum)[1]','int') as Can_Adl,
            r.value('(//ChildNum)[1]','int') as Can_Chd,
            r.query('declare default element 
            namespace"http://zzz.yyy.com";.') as ChildAges
    from @ROOMLIST.nodes('//ChildAges') as t(r)