2016-12-26 3 views
3

У меня есть запрос, который приводит к некоторому тексту на основе условия в нем. , но не беспокойтесь обо всех условиях, я столкнулся с проблемой, когда «md.OtherMedication =« OTHERMEDICATION »и его комментарий для отображения.xml path возвращает «<» для <и «>» для выполнения во время выполнения запроса. как получить первоначальное значение?

Так что если комментарий имеют значение как <shubham> тогда она возвращается

&lt;shubham&gt; 

, которая не является ожидаемым результатом. следующий запрос, который я использую.

Select '' + CASE WHEN md.OtherMedication = 'OTHERMEDICATION' THEN md.Comment ELSE '' END 
     FROM Medication md 
     WHERE md.HraDiagnosisId = 94121 FOR XML PATH(N'') 

Я ожидаю <shubham> как результат.

ответ

1

&lt; и &gt;less than и greater than теги вашего xml. вы можете заменить их в запросе так:

Select '' + CASE WHEN md.OtherMedication = 'OTHERMEDICATION' 
THEN Replace(Replace(md.Comment, '&lt;', '<'), '&gt;', '>') ELSE '' END 
FROM Medication md 
WHERE md.HraDiagnosisId = 94121 FOR XML PATH(N'') 
5

Try произнесения XML для Varchar с value() Method (xml Data Type)

select (Select '' + CASE WHEN md.OtherMedication = 'OTHERMEDICATION' 
        THEN md.Comment ELSE '' END 
     FROM Medication md 
     WHERE md.HraDiagnosisId = 94121 FOR XML PATH(N''),TYPE).value('.','varchar(max)') 

выше удаляет все типы XML-теги и даст вам простой текст.

+0

Спасибо, я обновил его @TT. –