Назовите узел в структуре XML из значения, полученного из результата в T-SQL

Поэтому я знаю, есть ли у вас это:

DECLARE @XML XML = '<A> <First>1</First> <Second>2</Second> <Third>3</Third> </A>' --I can get the name of the node but... SELECT Y.value('local-name(.)', 'varchar(50)') AS NodeName FROM @XML.nodes('A/*') AS X(Y) 

Как я уже видел в хороших примерах из таких потоков: Как получить имя узла и значения из переменной xml в t-sql

Но можете ли вы пойти другим путем и использовать значения из набора результатов, чтобы назвать узел? Я чувствую, что сделал это раньше, но не могу вспомнить, поэтому думал, что попрошу. Я ржав на перестановках For XML и других XML-образов SQL Server.

Продолжение из приведенного выше примера:

 SELECT Y.value('local-name(.)', 'varchar(50)') AS "ELEMENT-NODE" --Can I go from table to naming a node? FROM @XML.nodes('A/*') AS X(Y) --FOR XML AUTO, ELEMENTS -- NOPE FOR XML PATH(''), ROOT('A') 

Есть ли какой-то синтаксис, который гласит: «Привет, сделайте значение именем узла»?

Это – вообще! – невозможно установить псевдоним столбца из кода.

Существует два подхода к обходным методам:

  • PIVOT , если вы знаете все существующие имена заранее
  • динамический SQL

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

Как пример, ваш XML выше можно было бы решить следующим образом:

 DECLARE @XML XML = '<A> <First>1</First> <Second>2</Second> <Third>3</Third> </A> '; DECLARE @colList NVARCHAR(MAX)= ( SELECT STUFF( ( SELECT ',''' + nd.value('.','nvarchar(max)') + ''' AS ' + QUOTENAME(nd.value('local-name(.)','nvarchar(max)')) FROM @XML.nodes('/A/*') AS A(nd) FOR XML PATH('') ),1,1,'') ); EXEC(N'SELECT ' + @colList); 

Но ответа нет для всеобщего …

  • Обработка XML SQL Server - могут быть вставлены только не-документы
  • Данные XML-запроса SQL из столбца varchar (max)
  • вставлять данные из столбца xml в временную таблицу
  • Преобразование таблицы в XML с помощью атрибутов с использованием T-SQL
  • Как динамически изменять значение индекса с помощью SQL DML
  • SQL Server: создание XML с дочерними узлами для не уникальных значений
  • Производительность XML-процесса SQL: вставка в столбцы таблицы
  • Обновление таблицы SQL Server с помощью XML
  • Строка: 35, ERR_MSG: синтаксический анализ XML: строка 1, символ 1088, незаконный квалифицированный символ имени
  • Манипулирование XML-узлами в SQL (слияние узлов)
  • T-SQL XML получает значение от проблемы узла?
  • Давайте будем гением компьютера.