2017-02-17 80 views
2

我有一個名爲XMLIndex的表,其中包含名爲XMLRec的列,該列包含XML文件和值的結構。SQL Server:查找缺少XML的記錄標記

其中的一些記錄丟失了一個名爲標籤:<ISO></ISO>

我的問題是:我需要,以便在表中查找的XMLIndex的所有記錄,即缺少<ISO>標籤運行哪種類型的查詢?

這是一個例子XMLRecord XML包含ISO標籤:

<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

平凡的解決辦法是將它轉換爲nvarchar,做一個NOT LIKE%%。 – Will

回答

4

您可以使用XQuery exist方法。

檢查XML文檔中的任意位置:

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

檢查的特定位置:

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