sql >> Database >  >> RDS >> Sqlserver

Hoe verwijder ik een attribuut van een XML-variabele in SQL Server 2008?

U moet MET xmlnamespaces gebruiken , anders komt "/clue_personal_auto" niet overeen met de NAMESPACED clue_personal_auto xmlns="..." knooppunt.

Niet alleen dat, je kunt een naamruimte niet echt verwijderen omdat het geen normaal attribuut is.

Voorbeeld van het verwijderen van een normaal kenmerk

declare @xml table (xmlid int, xmldocument xml)
insert @xml select 357, '
<clue_personal_auto xmlns="http://cp.com/rules/client" otherattrib="x">
  <admin>
     <receipt_date>03/16/2011</receipt_date>
     <date_request_ordered>03/16/2011</date_request_ordered>
     <report_usage>Personal</report_usage>
  </admin>
</clue_personal_auto>'

;WITH XMLNAMESPACES ('http://cp.com/rules/client' as ns)
UPDATE @XML
SET XmlDocument.modify('delete  (/ns:clue_personal_auto/@otherattrib)[1]')
WHERE xmlid = 357

select * from @xml


  1. Ontsnappen aan een enkel aanhalingsteken bij gebruik van JdbcTemplate

  2. R en MySQL - controleren of een rij in een tabel bestaat voordat u ernaar schrijft met dbWriteTable()

  3. Probleem met weergave van MySQL-gegevens op Android Studio met volley

  4. Rails in afwachting van migratie in rake db:test:prepare