XML очень строгий. Я сомневаюсь, что было бы неплохо использовать naked <
в чистом html, но, похоже, это работает ...
Если ваш текст всегда находится между тегами <td>
(и между ними нет других тегов), вы можете попытаться использовать замену строки, чтобы вставить ваши поврежденные данные в раздел CDATA
.
Попробуй ...
;WITH CTE AS
(
select 1 AS NUM ,'<BODY><TD> values = 100 </TD></BODY>' AS TES
union
select 2,'<BODY><TD> values < 100 </TD></BODY>'
)
,replaced AS
(
SELECT NUM
,REPLACE(REPLACE(TES,'<TD>','<TD><![CDATA['),'</TD>',']]></TD>') AS TES_new
FROM cte
)
select NUM
, CAST(TES_new AS XML)
from replaced;
Это заменит все запрещенные символы неявно ...