簡體   English   中英

如何從xml值中獲取值而不在select語句中提及其屬性名稱

[英]How to get values from the xml value without mentioning its attribute's name in select statement

以下將正常工作。 但是我想動態讀取它,而無需屬性或同名

樣本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

您可以通過*選擇所有元素,然后通過[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小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM