Ievadam: SQL Server XML datu tipa datu mainīšanai izmanto speciālu XQuery valodas paplašinājumu- XML Data Modification Language - XML_DML, kas XQuery papildina ar trīs reģistrjūtīgiem atslēgvārdiem- "insert", "delete" un "replace value of". Par to vairāk- msdn.
Domāju vairumam pirmā doma būs izmantot "replace value of". Tālāk jau tam būtu jābūt tikai sintakses jautājumam:
declare @xml xmlProblēma ir tad, ja Šis elements ir tukšs. Tad vērtība netiek aizvietota.. Lūk:
set @xml = '<MansElements>Veca vertiba</MansElements>'
select @xml
set @xml.modify('replace value of (/MansElements/text())[1] with "Jauna vertiba"')
select @xml
-- PROBLĒMA!Tukšu elementu var aizpildīt šādi:
declare @xml xml
set @xml = '<MansElements></MansElements>'
select @xml
set @xml.modify('replace value of (/MansElements/text())[1] with "Jauna vertiba"')
select @xml
declare @xml xmlRezumējot- skaistu veidu, kā to izdarīt ar vienu komandu es neatradu.
set @xml = '<MansElements></MansElements>'
select @xml
set @xml.modify('insert text{"Jauna vertiba"} into (/MansElements)[1]');
select @xml
Kā variantu varētu izmantot ko šādu (strādā abos gadījumos korekti- ja ir vai ja nav vērtība):
declare @xml xml
set @xml = '<MansElements>aaa</MansElements>'
if(@xml.value('(/MansElements)[1]', 'nvarchar(max)') = '')
set @xml.modify('insert text{"Jauna vertiba"} into (/MansElements)[1]');
else
set @xml.modify('replace value of (/MansElements/text())[1] with "Jauna vertiba"');
select @xml
Starp citu, viela pārdomām- kāda atšķirība ir starp tekstu, kas ir '' (tukšs) un 'NULL' :)? Un kā var dabūt 'NULL' XML datu tipā?
Nav komentāru:
Ierakstīt komentāru