Sql-Server

合併兩個 XML 變數 - 請幫助!

  • November 16, 2021

我正在使用帶有 SQL Server 2016 Service Pack 2 (SP2) 的 SQL Server Management Studio 17.9.1。

沒有表結構可以展示,只有兩個包含 XML 的XML 變數,如下圖:

DECLARE @A XML = '
<ManageByCountry>
 <CountriesAllowed>
   <Country name="United States" countrycode="US" />
   <Country name="Canada" countrycode="CA" />
 </CountriesAllowed>
</ManageByCountry>
',
@B XML = '
<ManageByCountry>
 <CountriesAllowed>
   <Country name="United Kingdom" countrycode="GB" />
   <Country name="Puerto Rico" countrycode="PR" />
   <Country name="France" countrycode="FR" />
 </CountriesAllowed>
</ManageByCountry>
';

我正在尋找可以輸出以下內容的語句:

<ManageByCountry>
 <CountriesAllowed>
   <Country name="United States" countrycode="US" />
   <Country name="Canada" countrycode="CA" />
   <Country name="United Kingdom" countrycode="GB" />
   <Country name="Puerto Rico" countrycode="PR" />
   <Country name="France" countrycode="FR" />
 </CountriesAllowed>
</ManageByCountry>

我對查詢 XML 的了解不是很好,我不知道在哪里首先搜尋如何實現這一點。

使用query()從兩個變數中獲取 Country 節點,並使用for xml 路徑來重建 XML。

select @A.query('/ManageByCountry/CountriesAllowed/Country'),
      @B.query('/ManageByCountry/CountriesAllowed/Country')
for xml path('CountriesAllowed'), root('ManageByCountry');

引用自:https://dba.stackexchange.com/questions/302531