SQL Server:查找缺少XML标记的记录

时间:2017-02-17 20:52:55

标签: sql sql-server xml tsql

我有一个名为XMLIndex的表,其中包含一个名为XMLRec的列,它包含XML文件和值的结构。

其中一些记录缺少名为<ISO></ISO>

的标记

我的问题是:我需要运行什么类型的查询才能找到表格XMLIndex中缺少<ISO>标记的所有记录?

这是一个包含ISO标记的XMLRecord XML示例:

<XMLRecord>
  <pn>0042761</pn>
  <SRI>4.40</SRI>
  <igm>/images/images/0042761.gif</img>
  <ISO>ZW</ISO>
  <ListPrice>$5.50</ListPrice>  
</XMLRecord>

和一个有多个ISO(看标签差异很小):

<XMLRecord>
  <pn>0042762</pn>
  <SRI>4.40</SRI>
  <igm>/images/images/0042762.gif</img>
  <ISOs>ZW+NZ+AU+BR</ISOs>
  <ListPrice>$5.50</ListPrice>  
</XMLRecord>

缺少ISO标记的一个记录是XML结构不包含此标记的记录。

非常感谢任何例子。

谢谢。

1 个答案:

答案 0 :(得分:4)

您可以使用XQuery exist方法。

检查xml文档中的任何位置:

select *
from XMLIndex
where XMLRec.exist('//ISO') = 0

检查具体位置:

where XMLRec.exist('/XMLRecord/ISO') = 0