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

ahe*_*ick 4 sql-server xquery-sql

我将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>
Run Code Online (Sandbox Code Playgroud)

我要做的是获取存在记录的详细信息(dtl)节点.我确信这可以用xpath/xquery,我只是不确定如何.

Cha*_*ndu 9

试试这个:

SELECT CAST(<YOUR_XML_COLUMN> AS XML).query('count(//dtl)')
  FROM <YOUR_TABLE>
Run Code Online (Sandbox Code Playgroud)

例如:

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)')
Run Code Online (Sandbox Code Playgroud)

  • @ + 1 - 他需要将他的`nvarchar`转换成`xml`才能使用吗? (3认同)