2011-04-11 54 views
3

我有XML存储在一个nvarchar(最大)字段。我意识到有一个XML数据类型,但在这种情况下,它不是以这种方式存储的。比方说,XML的结构如下所示:Nvarchar(max)字段中的SQL Server查询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,我只是不完全确定如何。

回答

7

试试这个:

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)') 
+3

@ + 1 - 他需要施展他的'nvarchar'为'xml'这个工作? – JNK 2011-04-11 18:54:25

+0

@JNK:是的,我已更新帖子以反映相同。 – Chandu 2011-04-11 18:56:31