【发布时间】:2020-02-28 19:36:40
【问题描述】:
我在 SQL Server 表中有一个 XML 列。我想删除某些元素并从该 XML 列中提取其余信息。
CREATE TABLE #TempTable (xmlDoc xml)
INSERT INTO #TempTable (xmlDoc)
SELECT TOP 1 ai.[XMLDocument].value('(/RequestInfo/TransDocument)[1]','varchar(max)') AS xmlDoc FROM [dbo].[FormDetails] WHERE [FormID] = xyz
如果任何级别的子级(或子级的子级)没有特定值,我想删除所有这些元素。
在下面给出的示例中,我想删除所有 <FormDetail> 元素,其中 USStateCd 不等于 'NJ'
XML:
<Form>
<FormDetail>
<EmployeeInfoGrp>
<OtherCompletePersonName>
<PersonFirstNm>LALALALALI</PersonFirstNm>
<PersonMiddleNm>S</PersonMiddleNm>
<PersonLastNm>LILILILA</PersonLastNm>
</OtherCompletePersonName>
<MailingAddressGrp>
<USAddressGrp>
<AddressLine1Txt>108 ABCD AVE</AddressLine1Txt>
<CityNm>SPRINGFIELD</CityNm>
***<USStateCd>TN</USStateCd>***
<USZIPCd>37100</USZIPCd>
</USAddressGrp>
</MailingAddressGrp>
</EmployeeInfoGrp>
</FormDetail>
<FormDetail>
<EmployeeInfoGrp>
<OtherCompletePersonName>
<PersonFirstNm>CHACHACHACHA</PersonFirstNm>
<PersonMiddleNm>D</PersonMiddleNm>
<PersonLastNm>CHICHICHI</PersonLastNm>
</OtherCompletePersonName>
<MailingAddressGrp>
<USAddressGrp>
<AddressLine1Txt> EFGH AVE</AddressLine1Txt>
<CityNm>bLah</CityNm>
***<USStateCd>NJ</USStateCd>***
<USZIPCd>00111</USZIPCd>
</USAddressGrp>
</MailingAddressGrp>
</EmployeeInfoGrp>
</FormDetail>
</Form>
【问题讨论】:
标签: sql-server xml tsql