Tengo una tabla que tiene un campo XML. El XML típico que contiene es;Trabajando con el tipo de datos XML de SQL Server
<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>
En mi mesa que tengo alrededor de 50 filas, sólo estoy preocupado por dos campos, Omid (clave principal int) y omText (mis datos XML).
lo que estoy tratando de lograr es una forma de decir, a través de todos los datos XML en toda la mesa ... dame todos los xmlElements donde el título es X. O dame un recuento de todos los artículos que usan una ID de imagen de 55.
Estoy usando las funciones de tipo de datos XML VALUE y QUERY para recuperar los datos.
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
Que solo funciona donde el id que estoy buscando es el primero en el documento. No parece buscar todo el xml.
Fundamentalmente el conjunto de resultados regresa con una fila para cada entrada en la TABLA, mientras que creo que necesito tener una fila para cada ELEMENTO coincidente ... No estoy seguro de cómo comenzar a escribir un grupo por este tho.
Estoy empezando a sentir que estoy haciendo esto más difícil de lo que necesita ... pensamientos & ideas por favor.
Es ..... Eres una estrella. Saludos :) ¿No crees que puedes dirigirme hacia cualquier recurso decente para leer sobre la manipulación SQL XML? – GordonB
¡Me alegro de poder ayudar, Gordon! El mejor artículo SQL XML DML que encontré hasta ahora es bastante antiguo, pero sigue siendo muy útil: http://www.15seconds.com/Issue/050803.htm –
O aquí quizás: http://www.sqlservercentral.com/ Artículos/SQL + Server + 2005/XML / –