Включить текст в запрос ForXMLPath в SQL Server - PullRequest
0 голосов
/ 12 июня 2019

Я хочу включить строку (простой текст) в запрос ForXMLPath как

<Cat>

, но у меня возникли трудности.

При попытке ввести странные символы вместе с ним.

Пожалуйста, помогите.

Спасибо.

select
'<Cat>'

Я ожидаю этого

<Cat>

, но отображается ниже

&lt;Cat&gt;

1 Ответ

0 голосов
/ 24 июня 2019

Должен признать, что ваш вопрос неясен ...

XML - это не просто текст с необычными дополнениями , а очень строго организованный текстовый контейнер для данных.

Простой SELECT '<Cat>' никогда не вернется как без FOR XML где-то в вашем запросе. Поэтому, пожалуйста, покажите нам (уменьшенный!) Пример вашего полного запроса и ожидаемого результата, лучше всего предоставленного в виде MCVE ( автономный образец с DDL, данные образца, собственная попытка и ожидаемый результат).

Просто некоторые общие замечания:

  • Если вы хотите поместить <Cat> в ваш XML, весь вывод будет разбит XML. Этот открывающий тег требует закрытия </Cat> (или - альтернативно - самозакрывающегося <Cat />)
  • Предположительно, вы пытаетесь добавить в XML-теги текстовые записи, как если бы вы это делали в XSLT, JS, ASP.Net или любом другом подходе к созданию XML / HTML.
  • Предположительно, ваше решение будет подходом FOR XML PATH() без необходимости использования встроенного тега в вашем XML.

Просто чтобы дать вам представление:

SELECT 'test' AS [SomeElement] FOR XML PATH('SomeRowTag'),ROOT('SomeRootTag');

использует этот XML

<SomeRootTag>
  <SomeRowTag>
    <SomeElement>test</SomeElement>
  </SomeRowTag>
</SomeRootTag>

Если вы хотите добавить <Cat> элемент, вы можете использовать XPath, как здесь

SELECT 'test' AS [Cat/SomeElement] --<-- You can add nest-levels here!
FOR XML PATH('SomeRowTag'),ROOT('SomeRootTag');

Результат

<SomeRootTag>
  <SomeRowTag>
    <Cat>
      <SomeElement>test</SomeElement>
    </Cat>
  </SomeRowTag>
</SomeRootTag>
...