1

ここに、表形式で表示したい私のxmlがあります

DECLARE @xml XML 
SET @xml = '<root>
  <row>one</row>
  <row>two</row>
  <row>three</row>
</root>'

SELECT 
    x.y.value('(row/text())[1]', 'varchar(5)')
FROM @xml.nodes('root') x(y)

最初の行のみを表示しています。のようなデータを表示したい

Mycolumn
-----------
one
two
three

SQLで何を変更する必要があるか教えてください。ありがとう

以下の方法のように xquery で select into を発行できませんでした

DECLARE @xml XML 
SET @xml = '<root>
  <row>one</row>
  <row>two</row>
  <row>three</row>
</root>'

SELECT *
INTO #Fields
FROM (SELECT 
    x.y.value('text()[1]', 'varchar(5)') as fields11
FROM @xml.nodes('root/row') x(y))

SELECT * FROM #Fields
DROP TABLE #Fields

しかし、私は以下の方法のように xuqery で挿入を使用できます

DECLARE @xml XML 
SET @xml = '<root>
  <row>one</row>
  <row>two</row>
  <row>three</row>
</root>'

CREATE TABLE #Fields(Field varchar(MAX))

INSERT INTO #Fields
SELECT 
    x.y.value('text()[1]', 'varchar(5)') 
FROM @xml.nodes('root/row') x(y)

SELECT * FROM #Fields
DROP TABLE #Fields

そのため、誰でも xquery を使用して select into を構築するのを手伝うことができます。ありがとう

NOW XQUERY で動作する選択

DECLARE @xml XML 
SET @xml = '<root>
  <row>one</row>
  <row>two</row>
  <row>three</row>
</root>'

SELECT  x.y.value('text()[1]', 'varchar(5)') Mycolumn into #Fields
FROM    @xml.nodes('root/row') x(y)

select * from #Fields
drop table #Fields
4

1 に答える 1

2

これは機能するはずです:

SELECT  x.y.value('text()[1]', 'varchar(5)') Mycolumn
FROM    @xml.nodes('root/row') x(y)

nodes行が生成されるメソッドのパスはである必要がありますroot/row。この方法で3つの行が生成され、行の値ごとに式がその値をtext()[1]抽出する必要があります。

于 2013-03-05T11:41:34.317 に答える