У меня есть разные столбцы «сообщения», которые являются varchar, которые должны быть xml, но некоторые из них могут быть неверными или действительными. Я пытаюсь вырезать строки, которые имеют заданное входное значение для узла следующим образом: Выберите * из messagelog, где сообщение типа '% 1234567%'Как выбрать узел из потенциально не правильно сформированного xml как varchar?
Но когда я отфильтровываю те, чтобы попытаться поднять другой узел (1234567)) Какая ценность я не знаю, я сталкиваюсь с этой проблемой.
Я запустил каждую запись в xml wont work, так как 1% сообщений недействительны.
Этот код не анализирует varchar в xml, но возвращает подстроку, если она существует. Тем не менее, я получаю ошибку преобразования в случае charindex = 0. Некоторые MessageIds - это большие varchars.
Есть ли что-нибудь, что мне здесь не хватает? Я SOL для использования SQL для синтаксического анализа неформатированных XML-varchars?
select
case when CAST(charindex('<RelatesToMessageID>', message) as varchar(100)) = 0
then 1
else
substring(message, charindex('<RelatesToMessageID>', message)+20, charindex('</RelatesToMessageID>', message)-charindex('<RelatesToMessageID>', message)-20)
end
from messagelog
Conversion failed when converting the varchar value '959B91D824324108948261EC2A81CD92' to data type int.