4

XML を nvarchar(max) フィールドに格納しています。XML データ型があることは認識していますが、この場合はそのように格納されていません。XML が次のような構造になっているとします。

<root>
<hdr>
  <name>aj</name>
</hdr>
<dtls>
  <dtl>
    <price>1</price>
  </dtl>
  <dtl>
    <price>7</price>
  </dtl>
  <dtl>
    <price>3</price>
  </dtl>
</dtls>
</root>

私がやろうとしているのは、記録のために存在する詳細 (dtl) ノードの数を取得することです。これは xpath/xquery で可能であると確信していますが、その方法は正確にはわかりません。

4

1 に答える 1

11

これを試して:

SELECT CAST(<YOUR_XML_COLUMN> AS XML).query('count(//dtl)')
  FROM <YOUR_TABLE>

例えば:

DECLARE @x NVARCHAR(MAX)
SET @x = '<root> <hdr>   <name>aj</name> </hdr> <dtls>   <dtl>     <price>1</price>   </dtl>   <dtl>     <price>7</price>   </dtl>   <dtl>     <price>3</price>   </dtl> </dtls> </root>'
SELECT CAST(@x AS XML).query('count(//dtl)')
于 2011-04-11T18:43:40.290 に答える