Digamos que tengo los siguientes dos piezas de XML en mi base de datosLa fusión de XML en un servidor SQL
<!-- XML 1 -->
<pairs>
<item key="a">xml 1 a value</item>
<item key="b">xml 1 b value</item>
<item key="c">xml 1 c value</item>
</pairs>
<!-- XML 2 -->
<pairs>
<item key="c">xml 2 c value</item>
<item key="d">xml 2 d value</item>
<item key="e">xml 1 e value</item>
</pairs>
Estos datos se almacenan en dos tablas separadas utilizando el tipo de datos XML
, además, esta columna XML está vinculada a una esquema que describe el formato de la esperada por ejemplo, XML
[PairData] [xml](CONTENT [foo].[Pairs]) NULL
dentro de un procedimiento/función almacenada me gustaría fusionar estas dos estructuras XML en lo siguiente:
artículosa, b
de la segunda pieza de XML que hemos tomado::
<pairs>
<item key="a">xml 1 a value</item>
<item key="b">xml 1 b value</item>
<item key="c">xml 2 c value</item>
<item key="d">xml 2 d value</item>
<item key="e">xml 2 e value</item>
</pairs>
artículos Así, a partir de la primera pieza de XML que hemos tomado
c, d, e
en cuenta que las dos piezas de XML tener un elemento común con una clave de:
c
en este escenario, el valor de xml 2 se debe utilizar en el fusionada xml (descartando el valor de xml 1). Otro caso es que XML 1 o 2 podrían ser NULL, por lo que el proceso de fusión debería manejar esto y simplemente devolver el otro. O ambos podrían ser NULL, en cuyo caso se devuelve NULL.
Como un aparte, en nuestra implementación actual estamos devolviendo ambos documentos XML de la base de datos y haciendo la fusión en el código. Sin embargo, preferiríamos hacer esta fusión dentro de la base de datos ya que varios procesos no relacionados están llamando a este proceso.
La respuesta depende del almacenamiento de datos. (por ejemplo, su fuente es una tabla, una columna xml o una cadena de caracteres). Sería bueno si puedes proporcionar más información. –
Saludos por el comentario, pregunta actualizada. – MrEyes