2011-04-11 78 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