Используйте оператор LIKE на SQL Server Тип данных XML

Обратите внимание, что оборотная сторона сборки "мусора" Вашего репозитория - то, что, ну, в общем, мусор собран. Как все мы знаем как пользователей компьютера, файлы, которые мы рассматриваем, мусор прямо сейчас мог бы оказаться очень ценным три дня в будущем. То, что мерзавец имеет в наличии большинство его обломков, несколько раз убиралось подобру-поздорову †“путем просмотра всех повисших фиксаций, я восстановил много работы, которую я имел случайно консервированный.

Так don’t быть слишком большим количеством аккуратного пятна в Ваших частных клонах. There’s мало потребности в нем.

OTOH, значение восстанавливаемости данных сомнительно для repos, используемого главным образом в качестве пультов ДУ, например, места все нажатие devs к и/или вытянутый от. Там, могло бы быть разумно начать выполненный GC и переупаковка часто.

76
задан Cœur 26 July 2017 в 14:21
поделиться

2 ответа

Вы можете сделать это довольно легко:

SELECT * 
FROM WebPageContent 
WHERE data.value('(/PageContent/Text)[1]', 'varchar(100)') LIKE 'XYZ%'

Метод .value дает вам фактическое значение, и вы можете определить это должно быть возвращено как VARCHAR (), которое вы затем можете проверить с помощью оператора LIKE.

Имейте в виду, это не будет очень быстро. Итак, если у вас есть определенные поля в вашем XML, которые вам нужно много проверять, вы можете:

  • создать сохраненную функцию, которая получает XML и возвращает значение, которое вы ищете, как VARCHAR ()
  • , определить новое вычисляемое поле в вашей таблице, которое вызывает эту функцию и превращает его в столбец PERSISTED

. Таким образом, вы в основном "извлекаете" определенную часть XML в вычисляемое поле, сохраняете ее, а затем можете выполнять поиск очень эффективно (черт возьми: вы даже можете ИНДЕКСИРОВАТЬ это поле!).

Marc

67
ответ дан 24 November 2019 в 11:17
поделиться

Это то, что я собираюсь использовать на основе ответа marc_s:

SELECT 
SUBSTRING(DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)'),PATINDEX('%NORTH%',DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)')) - 20,999)

FROM WEBPAGECONTENT 
WHERE COALESCE(PATINDEX('%NORTH%',DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)')),0) > 0

Возвращает подстроку в поиске, в котором существуют критерии поиска

0
ответ дан 24 November 2019 в 11:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: