SQL XQuery добавить атрибут id там, где его нет

У меня есть коллекция XML:

<Cars>
    <Car id="1ECFD1AB-758D-4BA1-8D4A-387861E0B2E3">etc.</Car>
    <Car id="5C71E7A8-46C7-41F8-860E-69C95F917AD2">etc.</Car>
    <Car>etc.</Car>
    <Car>etc.</Car>
</Cars>

Я передаю это в переменную xml в хранимой процедуре, и мне нужен способ добавить атрибут id с новым guid для автомобилей без такового.

Какой самый лучший / самый быстрый / самый эффективный способ сделать это с помощью XQuery

1 ответ

Не знаком с использованием SQL, но это может сработать, если вы можете вставить переменную там, где она говорит GUID-GOES-HERE (и заменяя синтаксис doc () в соответствии с вашей средой):

<Cars> {
for $Car in doc('test')//Car
return <Car id='{ if ($Car/@id) then $Car/@id else "GUID-GOES-HERE"}'>{$Car/text()}</Car>
} </Cars>

(Проверено на http://basex.org/products/live-demo/)

Обратите внимание, что это использует XQuery, а не XQUF (который я также не знаю, уровень поддержки с SQL).

Другие вопросы по тегам