У меня есть следующий запрос, в котором я ищу в столбце типа XMLData.
Я хочу вернуть подстроку узла, которая либо начинается с критериев поиска и количества символов X, а затем заканчивается на полном слове, либо подстрокой, которая помещает критерии поиска в середину результата с количеством символов X перед и после начала / окончания нового слова.
Причина этих двух понятий заключается в том, что критерии поиска могут быть в начале узла, следовательно, число X после символов или, если глубоко в тексте, отображаются символы до / после.
Кажется, мой запрос начинается с нового слова, но я не могу разобраться, заканчивая его, у меня была попытка перевернуть строку, сделать для нее patindex, затем выполнить длительность поиска - patindex, но, похоже, это не работа.
Спасибо
SELECT
P.Title,
SUBSTRING(DATA.value('(/PageContent/Text)[1]', 'VARCHAR(100)'),PATINDEX('%north%',DATA.value('(/PageContent/Text)[1]', 'VARCHAR(100)')) - 20 + PATINDEX('% %',SUBSTRING(DATA.value('(/PageContent/Text)[1]', 'VARCHAR(100)'),PATINDEX('%north%',DATA.value('(/PageContent/Text)[1]', 'VARCHAR(100)')) - 20,999)),999) AS Data
FROM WEBPAGECONTENT W
INNER JOIN WebPage P
ON P.ID = W.PageID
WHERE COALESCE(PATINDEX('%north%',DATA.value('(/PageContent/Text)[1]', 'VARCHAR(100)')),0) > 0