Powiedzmy mam następujące dwa kawałki XML w mojej bazy danychScalanie XML w SQL Server
<!-- 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>
Dane te są przechowywane w dwóch oddzielnych tabelach pomocą XML
typ danych, dodatkowo ta kolumna XML jest związany z schemat, który opisuje format oczekiwany xml np
[PairData] [xml](CONTENT [foo].[Pairs]) NULL
ciągu przechowywanej procedury/funkcji chciałbym połączyć te dwie struktury XML do następujących:
<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>
Tak, od pierwszego kawałka xml podjęliśmy przedmiotów
a, b
z drugiego kawałka xml podjęliśmy przedmiotów
c, d, e
Zauważmy, że oba kawałki XML mają wspólny element z kluczem:
c
w tym scenariuszu wartość z xml 2 powinny być stosowane w wyniku połączenia xml (odrzucając wartość z xml 1). Innym przypadkiem jest to, że XML 1 lub 2 może mieć wartość NULL, dlatego proces scalania powinien zająć się tym i po prostu zwrócić drugi. Lub oba mogą mieć wartość NULL, w którym to przypadku zwracana jest wartość NULL.
Na marginesie, w naszej obecnej implementacji zwracamy oba dokumenty XML z DB i wykonujemy scalenie kodu. Jednak wolelibyśmy, aby to połączenie zostało wykonane w DB, ponieważ wiele niepowiązanych procesów wywołuje ten proces.
Odpowiedź zależy od miejsca przechowywania danych. (np. czy źródłem jest tabela, kolumna xml lub ciąg znaków). Byłoby miło, gdybyś mógł podać więcej informacji. –
Pozdrowienia za komentarz, pytanie zaktualizowane. – MrEyes