1

XML データを取得し、各ノード値をテーブルの行に挿入したいと考えています。たとえば、私は持っています:

<Tags> 
    <Tag>a</Tag> 
    <Tag>b</Tag> 
    <Tag>c</Tag>
</Tags>

という名前のテーブルに a、b、および c を挿入したいと考えていますTags。どうすればいいですか?

@I私はこれまでのところこのコードを持っていますが、xquery 部分で定義する方法がわかりません。ところで、もっと簡単な方法はありますか?

CREATE TABLE #T (tag nvarchar(100))

DECLARE @TagsXML xml
DECLARE @TagsCount int
DECLARE @I int = 0

SET @TagsXML = '<Tags><Tag>a</Tag><Tag>b</Tag><Tag>c</Tag></Tags>'
SET @TagsCount = (SELECT T.x.value('count(Tag)', 'nvarchar(100)') FROM @TagsXML.nodes('Tags') T(x))

WHILE @I < @TagsCount
BEGIN
    INSERT INTO #T VALUES ((SELECT T.x.value('concat("Tag[", @I, "]")', 'nvarchar(100)') FROM @TagsXML.nodes('Tags') T(x)))
    SET @I = @I + 1
END

SELECT * FROM #T
4

1 に答える 1