【发布时间】:2019-04-18 21:02:24
【问题描述】:
我需要从SPEC 列中的所有Output\OutputFields\OutputField 中获取名称字段的值。
create table T
(
ID uniqueidentifier default newid(),
SPEC xml
);
insert into T (SPEC)
values (N'<QueryViewSpec xmlns="bb_appfx_queryview" xmlns:common="bb_appfx_commontypes">
<Output>
<OutputFields>
<OutputField Caption="Key name prefix" Name="KEYNAMEPREFIX" CaptionResourceKey="$$key_name_prefix" />
<OutputField Caption="Number of employees" Name="NUMEMPLOYEES" CaptionResourceKey="$$number_of_employees" />
<OutputField Caption="Number of subsidiaries" Name="NUMSUBSIDIARIES" CaptionResourceKey="$$number_of_subsidiaries" />
<OutputField Caption="Parent corporation ID" IsHidden="true" Name="PARENTCORPID" />
<OutputField Caption="Is organization" Name="ISORGANIZATION" CaptionResourceKey="$$is_organization" />
<OutputField Caption="Last/Organization/Group/Household name" Name="KEYNAME" CaptionResourceKey="$$last/organization/group/household_name" />
<OutputField Caption="First name" Name="FIRSTNAME" CaptionResourceKey="$$first_name" />
<OutputField Caption="Middle name" Name="MIDDLENAME" CaptionResourceKey="$$middle_name" />
<OutputField Caption="Maiden name" Name="MAIDENNAME" CaptionResourceKey="$$maiden_name" />
<OutputField Caption="Nickname" Name="NICKNAME" CaptionResourceKey="$$nickname" />
<OutputField Caption="Lookup ID" Name="LOOKUPID" CaptionResourceKey="$$lookup_id" />
</OutputFields>
</Output>
</QueryViewSpec>')
select * from T
;with xmlnamespaces ('bb_appfx_queryview' as ns)
select
R.c.value('@Name', 'varchar(max)')
from
T
outer apply
SPEC.nodes('ns:QueryViewSpec/Output/OutputFields/OutputField') as R(c)
drop table T;
我错过了什么?我尝试过使用和不使用命名空间,但都没有运气。
【问题讨论】:
标签: sql-server xml tsql