1

2つの列を持つ一時テーブル#xmlがあります。

CREATE TABLE #xml
(
    id int,
    xmlroutes xml
)
INSERT INTO #xml (id, xmlroutes)
(SELECT TOP 50 Id, CAST(RouteParameters as xml) as xmlroutes FROM LoggingRecords WHERE RouteParameters IS NOT NULL)

idを選択し、xmlを次のスクリプトとペアにします。

(SELECT id, T2.Loc.query('.') as pair
FROM   #xml
CROSS APPLY xmlroutes.nodes('/route/pair') as T2(Loc))

LoggingRecordsには、xmlにキャスト可能な文字列(nvarchar)が含まれています。

すべてのレコードの次のxml構造があります:

<route>
   <pair key="x" value="y"/>
   <pair key="z" value="1"/>
   <pair key="a" value="b"/>
</route>

#xmlテーブルの各レコードから次のデータを選択したい(各IDは多くのペアに関連付けることができます):

  1. Id
  2. 価値

これどうやってするの?

4

1 に答える 1

2
select X.id,
       T.N.value('@key', 'nvarchar(50)') as [Key],
       T.N.value('@value', 'nvarchar(50)') as [Value]
from #xml as X
  cross apply X.xmlroutes.nodes('/route/pair') as T(N)

SE-データ

于 2012-06-15T11:51:24.783 に答える