Ho una tabella che ha un campo XML. L'XML tipico che contiene è;Lavorare con lo SQL Server tipo di dati XML
<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>
Nel mio tavolo ho circa 50 righe, sono preoccupato solo con due campi, Omid (chiave primaria int) e omText (i miei dati XML).
quello che sto cercando di realizzare è un modo di dire, in tutti i dati XML in tutto il tavolo ... dammi tutti i xmlElements dove il titolo è X. o darmi un conteggio di tutti gli elementi che utilizzano un ImageID di 55.
sto usando il tipo di valore di dati XML e le funzioni di query per recuperare i dati.
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
Che funziona solo dove l'ID che sto cercando è il primo nel documento. Non sembra cercare tutto l'xml.
Fondamentalmente il set di risultati ritorna con una riga per ogni voce nella TABELLA, dove penso che ho bisogno di avere una riga per ogni elemento abbinato ... Non esattamente sicuro come iniziare a scrivere un gruppo per questo.
Sto iniziando a sentire come sto rendendo questo più difficile di quanto debba essere ...... pensieri & idee per favore.
È ..... Sei una stella. Saluti :) Non supponiamo che tu possa indicarmi la direzione di qualsiasi risorsa decente per leggere sulla manipolazione SQL XML ??? – GordonB
Felice di poter aiutare, Gordon! Il miglior articolo SQL DML XML che ho trovato finora è piuttosto vecchio, ma ancora molto utile: http://www.15seconds.com/Issue/050803.htm –
O questo qui forse: http://www.sqlservercentral.com/ articoli/SQL + Server + 2005/XML / –