SQLでXMLのノード値を読みたいのですが、私のXMLは次のようになります
'Order 1'である注文ノードの値を読み取りたいだけで、コードは
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT * FROM OPENXML (@idoc, '/ROOT/Customer/Order',0)
WITH (
[Order] varchar(100)
);
CREATE TABLE test(data xml); insert into test values (' <ROOT> <Customer> <Order>Order 1</Order> </Customer> <Customer> <Order>Order 2</Order> </Customer> </ROOT>'); GO
1行が影響を受けました
最初に必要な場合<Order>
XMLデータの要素で、次の文を使用できます。
SELECT data.value('(ROOT/Customer/Order)[1]', 'varchar(100)') FROM test; GO
| (列名なし)| | :------------ |注文1 |
すべてを選択する必要がある場合<Order>
要素.nodes()でCROSS APPLYソリューションを使用できます
SELECT T2.lin.value('(Order)[1]', 'varchar(100)') FROM test CROSS APPLY data.nodes('/ROOT/Customer') as T2(lin) GO
| (列名なし)| | :--------------- | |注文1 | |注文2 |
dbfiddle ---(ここ