Sql server SQL Server查询Nvarchar(max)字段中的XML?

Sql server SQL Server查询Nvarchar(max)字段中的XML?,sql-server,xquery-sql,Sql Server,Xquery Sql,我将XML存储在nvarchar(max)字段中。我意识到存在XML数据类型,但在本例中,它不是以这种方式存储的。假设XML的结构如下所示: <root> <hdr> <name>aj</name> </hdr> <dtls> <dtl> <price>1</price> </dtl> <dtl> <price>7<

我将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>

aj
1.
7.
3.
我试图做的是获取存在以供记录的细节(dtl)节点的计数。我确信这在xpath/xquery中是可能的,但我不确定如何实现。

试试这个:

SELECT CAST(<YOUR_XML_COLUMN> AS XML).query('count(//dtl)')
  FROM <YOUR_TABLE>
SELECT CAST(作为XML).query('count(//dtl)'
从…起
e、 g:

DECLARE@x NVARCHAR(最大值)
设置@x='aj 1 7 3'
选择CAST(@x为XML).query('count(//dtl'))

@+1-他是否需要将他的
nvarchar
转换为
xml
才能工作?
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)')