@new xml = '<row GUEST_ID="13" GUEST_NAME="VEDAT35" GUEST_SURNAME="PALA" ADRESS="IZMIR" CITY="DR" CITY_CODE="35" />'
aşağıdaki kola old ve new değerlerini karşılaştırıp
<row CITY="DR" CITY_CODE="35" /> değerini buluyorum farklı olan..
Fakat olması gereken şey old xml içinde yer alan VEDAT değeri VEDAT35 olduğu halde bunu listeyelemiyorum.Kodda nasıl bir değişiklik yaparsam bu değeride listeleyebilirim..
Aslında olması gereken doğru sonuç XML olarak şu olması gerekiyor
<row GUEST_NAME="VEDAT35" CITY="DR" CITY_CODE="35" />
Kod: Tümünü seç
DECLARE @old xml = '<row GUEST_ID="13" GUEST_NAME="VEDAT" GUEST_SURNAME="PALA" ADRESS="IZMIR" />',
@new xml = '<row GUEST_ID="13" GUEST_NAME="VEDAT35" GUEST_SURNAME="PALA" ADRESS="IZMIR" CITY="DR" CITY_CODE="35" />'
DECLARE @attr sysname
DECLARE cur CURSOR STATIC LOCAL FOR
SELECT attr
FROM (SELECT T.c.value('local-name(.)', 'nvarchar(128)') AS attr,
T.c.value('.', 'nvarchar(4000)') AS oldvalue,
NULL AS newvalue
FROM @old.nodes('/row/@*') AS T(c)
UNION ALL
SELECT T.c.value('local-name(.)', 'nvarchar(128)') AS attr,
NULL,
T.c.value('.', 'nvarchar(4000)') AS newvalue
FROM @new.nodes('/row/@*') AS T(c)) AS u
GROUP BY attr
HAVING MIN(oldvalue) = MIN(oldvalue)
OPEN cur
WHILE 1 = 1
BEGIN
FETCH cur INTO @attr
IF @@fetch_status <> 0
BREAK
SET @new.modify('delete /row/@*[local-name(.)=sql:variable("@attr")]')
END
DEALLOCATE cur
SELECT @new
<row CITY="DR" CITY_CODE="35" />