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)
我在 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)