Итак, со следующими данными в базе данных предприятия за $ 1025 * 2014:
DECLARE @table TABLE (XmlCol XML)
INSERT INTO @table (XmlCol) VALUES ('
<DEFeatureClassInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.8" xsi:type="typens:DEFeatureClassInfo">
<GPFieldInfoExs xsi:type="typens:ArrayOfGPFieldInfoEx">
<GPFieldInfoEx xsi:type="typens:GPFieldInfoEx">
<Name>UNITCODE</Name>
<AliasName>UNITCODE</AliasName>
<ModelName>UNITCODE</ModelName>
<FieldType>esriFieldTypeString</FieldType>
<IsNullable>true</IsNullable>
<Required>true</Required>
</GPFieldInfoEx>
<GPFieldInfoEx xsi:type="typens:GPFieldInfoEx">
<Name>REGIONCODE</Name>
<AliasName>REGIONCODE</AliasName>
<ModelName>REGIONCODE</ModelName>
<DomainName>DOM_REGIONCODE_NPS2016</DomainName>
<FieldType>esriFieldTypeString</FieldType>
<DefaultValueString>SER</DefaultValueString>
<IsNullable>true</IsNullable>
<Required>true</Required>
</GPFieldInfoEx>
<GPFieldInfoEx xsi:type="typens:GPFieldInfoEx">
<Name>CREATEUSER</Name>
<AliasName>CREATEUSER</AliasName>
<ModelName>CREATEUSER</ModelName>
<FieldType>esriFieldTypeString</FieldType>
<DefaultValueString>GRSM User</DefaultValueString>
<IsNullable>true</IsNullable>
<Required>true</Required>
</GPFieldInfoEx>
</GPFieldInfoExs>
</DEFeatureClassInfo>')
Я хочу удалить (Элемент? Узел?) На основе критериев. В примере, который я вставил, у меня есть 3 элемента, все с
<Required>true</Required>
Что я хочу сделать, это удалить
<Required>true</Required>
ONLY , когда
<Name>CREATEUSER</Name>
Существует в одном и том же элементе (здесь я могу путать узлы и элементы).
Другими словами, это столбец XML, который определяет схему БД для таблицы, у меня есть сотни таблиц, в которых мне нужно изменить определение схемы XML так, чтобы каждый раз, когда появляется CREATEUSER, значение true удаляется (не изменяется и не заменяется).
Пока что я до
SELECT *
FROM GDB_ITEMS
WHERE GDB_ITEMS.Definition.exist(N'//Name[text()="CREATEUSER"]') = 1;
, что заняло у меня 4 часа поиска в Google и показывает мне, по крайней мере, какие таблицы в моей БД имеют CREATEUSER в определении схемы XML. Просто нужно потрогать все это и удалить истину. Для пояснения есть и другие случаи, когда я не не хочу удалять true. В том же примере, опубликованном выше, мы видим true присутствует в узле "UNITCODE", и true нельзя удалить / удалить. Я хочу удалить true только тогда, когда это связано с CREATEUSER.