我将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,我只是不确定如何。
答案 0 :(得分:8)
试试这个:
SELECT CAST(<YOUR_XML_COLUMN> AS XML).query('count(//dtl)')
FROM <YOUR_TABLE>
e.g:
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)')