以下はうまくいきます。しかし、属性や列名なしで動的に読み取りたい
サンプル 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)
上記は正常に動作します。select ステートメントで属性名を指定せずに xml 値から値を取得する方法。
-- 必要なクエリのサンプル形式例:
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))
ありがとう、ヴェルザンカー