以下工作正常。但是我想在没有属性或库存名称的情况下动态地阅读它
示例xml
declare @xmlval xml='<ArrayOfCustomers>
<Customer>
<ItemId>1</ItemId>
<Value>Mr Smith</Value>
</Customer>
<Customer>
<ItemId>2</ItemId>
<Value>Mr Bloggs</Value>
</Customer>
</ArrayOfCustomers>'
示例查询
SELECT
Cust.value('(ItemId)[1]', 'int') AS 'ItemID',
Cust.value('(Value)[1]', 'Varchar(50)') AS 'Customer Name'
FROM
@xmlval.nodes('/ArrayOfCustomers/Customer') AS AOC(Cust)
以上工作正常。如何从xml值中获取值而不在select语句中提及其属性名称。
- 必需的查询样本格式 例如:
SELECT
Cust.value('[0][1]', 'int') AS 'ItemID',
Cust.value('[1][1]', 'Varchar(50)') AS 'Customer Name'
或
SELECT
Cust.value('[1]', 'int') AS 'ItemID',
Cust.value('[1]', 'Varchar(50)') AS 'Customer Name'
FROM
@xmlval.nodes('/ArrayOfCustomers/Customer') AS AOC(Cust)
在我们的例子中,我不知道输入@xmlval值的列或属性名称。我想将xml值插入新表(int,varchar(50))
谢谢, Velsankar
答案 0 :(得分:0)
您可以按*
选择所有元素,然后先按[1]
获取,然后按[2]
获取:
select
Cust.value('*[1]', 'int') AS 'ItemID',
Cust.value('*[2]', 'Varchar(50)') AS 'Customer Name'
from @xmlval.nodes('/ArrayOfCustomers/Customer') as AOC(Cust)
<强> sql fiddle demo 强>