Так, каков наилучший способ получить
элементы, которые не содержат строку?
Попробуйте использовать вычисляемый столбец, чтобы отразить искомое значение, создав противоположное значение.
Например, скажем, столбец называется IsCritical . Затем добавьте столбец как «ДА / НЕТ» и формулу как
=ISNUMBER(FIND("Critical"), [Title])
Тогда в вашем CAML-запросе
<Query>
<Where>
<Eq>
<FieldRef Name='IsCritical'/>
<Value Type='Boolean'>0</Value>
</Eq>
</Where>
</Query>
0 в этом запросе как бы отражает "Не критично". Однако я не уверен, что производительность может отличаться от наличия в CAML «Not Containts», которого, к сожалению, не существует.
См. Также Схема CAML-запроса на MSDN