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).