SQL Server: конвертировать Varchar в XML - затем работать с ним и выбирать данные? - PullRequest
0 голосов
/ 18 октября 2019

Я получил столбец Varchar, который содержит XML. Я хотел бы преобразовать их в JSON, чтобы я провел быстрый тест.

Вот что сработало до сих пор:

DECLARE @xml XML
SET @XML = '<content>
  <value>123456</value>
</content>'

SELECT
    '{"foo":"' + b.value('(./value)[1]', 'VARCHAR(50)')  + '"}' 
FROM
    @xml.nodes('/content') AS a(b)

Результат:

 {"foo":"123456"}

Покатак хорошо, но это не делает половину работы, которая должна быть сделана.

  • У меня много строк, и я хочу преобразовать все строки сразу.
  • У меня естьнесколько значений внутри тега содержимого, и поэтому я не могу просто добавить префикс и суффикс json, поскольку внутри этого массива будет более одного идентификатора.

Я читал эту статью: https://docs.microsoft.com/en-us/sql/t-sql/xml/nodes-method-xml-data-type?view=sql-server-ver15, нотак как мой целевой столбец - VARCHAR и должен быть приведен, это фактически не помогло мне ...

Итак, сначала я приведу значения к xml:

SELECT CAST(mytextField.TEXTVALUE AS XML) AS xmlData
FROM myDataTable  
WHERE mytextFieldId = 12345

Thisвозвращает значения в виде XML:

<content><value>12345</value></content>
<content><value>9874</value></content>
<content><value>Foo</value><value>Bar</value></content>

Теперь я застрял.

  • Как выбрать этот результат в новом запросе?
  • Как лучше всего преобразовать его в формат json?

ВПервый фрагмент Я добавил префикс и суффикс к значению тега значения xmls. Как я могу сделать это с выбранными рядами бросков?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...