Arbeiten mit dem SQL Server XML data type

Ich habe eine Tabelle, die eine XML-Feld.
Die typische XML enthält, ist;

<things>
  <Fruit>
    <imageId>39</imageId>
    <title>Apple</title>
  </Fruit>
  <Fruit>
    <imageId>55</imageId>
    <title>Pear</title>
  </Fruit>
  <Fruit>
    <imageId>76</imageId>
    <title>Grape</title>
  </Fruit>
</things>

In meiner Tabelle habe ich um die 50 Zeilen, ich bin nur besorgt, mit zwei Feldern, omId (int primary key) und omText (meine xml-Daten).

, Was ich versuche zu erreichen ist eine Art zu sagen, auf alle xml-Daten in die gesamte Tabelle... gebt mir alle xmlElements wo der Titel ist X. Oder geben Sie mir eine Anzahl der Elemente, die Verwendung einer imageId der 55.

Ich bin mit dem XML-Datentyp WERT-und ABFRAGE-Funktionen, um die Daten abzurufen.

   select omID,
   omText.query('/things/Fruit')
   ,cast('<results>' + cast(omText.query('/things/Fruit') as varchar(max)) + '</results>' as xml) as Value
   from dbo.myTable
   where omText.value('(/things/Fruit/imageId)[1]', 'int') = 76

Die funktioniert nur, wo die id, die ich bin auf der Suche für die erste in das Dokument. Es scheint nicht zu suchen, alle xml.

Grundsätzlich die Ergebnismenge, kommt zurück mit einer Zeile für jeden Eintrag in der TABELLE, während ich denke, ich muss eine Zeile für jedes passende ELEMENT... Nicht genau sicher, wie zu Beginn schreiben eines group-by für dieses tho.

Ich fange an zu fühlen, wie ich bin macht dies schwieriger, als es sein muss...... Gedanken & Vorstellungen bitte.

InformationsquelleAutor GordonB | 2009-07-31
Schreibe einen Kommentar