SQL Tips

 

[SQL SERVER] XMLをテーブル形式に変換するSQL

以下のXMLデータをテーブル形式に変換する方法を説明します。

<NewDataSet>
<row>
<Title>タイトル1</Title>
<Memo>内容1</Memo>
<UserID>test1</UserID>
<Count>1</Count>
</row>
<row>
<Title>タイトル2</Title>
<Memo>内容2</Memo>
<UserID>test2</UserID>
<Count>2</Count>
</row>
</NewDataSet>

一つ目方法!
このまま実行してみてください。

DECLARE @XmlData xml
SET @XmlData = '<NewDataSet><row><Title>タイトル1</Title><Memo>内容1</Memo><UserID>test1</UserID><Count>1</Count></row><row><Title>タイトル2</Title><Memo>内容2</Memo><UserID>test2</UserID><Count>2</Count></row></NewDataSet>'


DECLARE @IntDoc int

EXEC sp_xml_preparedocument @IntDoc OUTPUT, @XmlData

SELECT Title, Memo, UserID, Count
FROM OPENXML(@Intdoc, '/NewDataSet/row',2)
WITH (Title nvarchar(20), Memo nvarchar(20), UserID varchar(20), Count int)

EXEC sp_xml_removedocument @Intdoc

そして二つ目。

DECLARE @XmlData xml
SET @XmlData = '<NewDataSet><row><Title>タイトル1</Title><Memo>内容1</Memo><UserID>test1</UserID><Count>1</Count></row><row><Title>タイトル2</Title><Memo>内容2</Memo><UserID>test2</UserID><Count>2</Count></row></NewDataSet>'


SELECT Node.Data.value('(Title)[1]','nvarchar(20)') AS Title
, Node.Data.value('(Memo)[1]','nvarchar(20)') AS Memo
, Node.Data.value('(UserID)[1]','varchar(20)') AS UserID
, Node.Data.value('(Count)[1]','int') AS Count
FROM @XmlData.nodes('/NewDataSet/row') Node(Data)

両方同じ結果を得られます。
実行結果


一つ目は変数がXMLでもnvarchar, varcharでも使えます。
二つ目の方法は変数がXMLデータ型のみ使えます。
このエントリーをはてなブックマークに追加
2018-12-27 16:40:09   539

コメント

[SQL Server] 暗号化、復号化 / ENCRYPTBYPASSPHRASE / DECRYPTBYPASSPHRASE

-.日付:2014-02-28   カテゴリ : -   閲覧数:6630

[SQL Server] OpenQuery 利用方法

-.日付:2019-07-19   カテゴリ : -   閲覧数:130

[SQL SERVER] XMLをテーブル形式に変換するSQL

-.日付:2018-12-27   カテゴリ : -   閲覧数:539

[SQL SERVER] JSON 文字列をテーブル形式に変換するSQL

-.日付:2018-12-27   カテゴリ : -   閲覧数:240

[SQL SERVER]日付をフォーマット(format)された文字列に変換する

-.日付:2018-12-27   カテゴリ : -   閲覧数:375

[SQL Server] sidを指定してcreate userでDBアカウント作成方法

-.日付:2018-12-27   カテゴリ : -   閲覧数:237

[SQL SERVER] Trace Logのtrcファイルの内容を確認する方法

-.日付:2018-12-05   カテゴリ : -   閲覧数:303

Copyright © 2015 INNOYA.COM All rights reserved. RSS