Intereting Posts
Как ускорить транзакцию вставки, повторяющуюся снова и снова DELETE FROM `table` AS` alias` … WHERE `alias`.`column` … почему синтаксическая ошибка? Попытка сохранить массив данных в базе данных с помощью c # Вычислить время выполнения SQL-запроса? Row_Number () более 2 миллиардов записей (Teradata) Создание и обновление нового столбца в улье Обновление с исключением оператора Как оптимизировать запрос Core Data для полнотекстового поиска SQL-столбцы char и nchar ищут по-разному Доступ к строке подключения к базе данных с помощью app.config в C # winform возможно ли генерировать генератор буквенно-цифровой последовательности в sql Как изменить первичный ключ для некластеризации? Как найти сумму столбца между заданным диапазоном дат, где таблица имеет только дату начала и дату окончания Потребление веб-сервисов от Oracle PL / SQL как заменить акцентированную букву в столбце varchar2 в оракуле

В SQLServer 2012 TSQL, в чем отличие использования XML RAW, XML AUTO и XML PATH

Как название, все открытые умы приветствуются

Я тестировал на своем компьютере, результат, похоже, тот же.

Например.

USE BOB_DATABASE SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User FOR XML AUTO USE BOB_DATABASE SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User FOR XML RAW USE BOB_DATABASE SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User FOR XML RAW, ELEMENTS USE BOB_DATABASE SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User FOR XML PATH('CUSTOMERS') 

XML RAW: каждая строка в наборе результатов принимается за один элемент, а ваши столбцы являются атрибутами.

Пример:

 USE BOB_DATABASE SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User FOR XML RAW; 

ВЫВОД:

 <row id="7801020202083" First_Name="John" Surname="Doe" /> <row id="9812150201082" First_Name="Samantha" Surname="Hill" /> 

XML AUTO: имена таблиц – это ваши элементы

Пример:

 USE BOB_DATABASE SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User FOR XML AUTO; 

ВЫВОД:

 <DBO.T_USER id="7801020202083" First_Name="John" Surname="Doe" /> <DBO.T_USER id="7801020202083" First_Name="John" Surname="Doe" /> 

Путь XML: столбцы столбцов передаются как дочерние элементы.

Пример:

 USE BOB_DATABASE SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User FOR XML PATH; 

ВЫВОД:

 <row> <id>7801020202083</id> <First_Name>John</First_Name> <Surname>Doe</Surname> </row> <row> <id>7801020202083</id> <First_Name>John</First_Name> <Surname>Doe</Surname> </row> 

Также ознакомьтесь с этим блогом https://www.simple-talk.com/sql/learn-sql-server/using-the-for-xml-clause-to-return-query-results-as-xml/ для лучшая неисправность.

К сожалению, они действительно не то же самое. Посмотрите, как выложены узлы. Посмотрите на атрибуты. Существуют тонкие различия, которые имеют большие последствия для того, как XML будет потребляться. Возможно, вам нужно управлять корневым элементом: ROOT ('SomeElementName'). MSDN содержит действительно подробное объяснение каждого из вариантов синтаксиса. MSDN для XML . Я размещаю некоторый код, который поможет вам разобраться с различиями. Кроме того, некоторые синтаксисы будут иметь заметные изменения только тогда, когда вы присоединитесь к своему коду. Тем самым помогает вам установить иерархию.

 IF OBJECT_ID('tempdb..#XmlTestTable') IS NOT NULL DROP TABLE #XmlTestTable CREATE TABLE #XmlTestTable ( ID INT PRIMARY KEY IDENTITY(1,1), FirstName VARCHAR(20), LastName VARCHAR(20) ) INSERT INTO #XmlTestTable (FirstName,LastName) VALUES ('John','Doe'), ('Jane','Doe'), ('Brian','Smith'), ('Your','Mom') --YOUR TESTS SELECT * FROM #XmlTestTable FOR XML AUTO SELECT * FROM #XmlTestTable FOR XML RAW SELECT * FROM #XmlTestTable FOR XML RAW, ELEMENTS SELECT * FROM #XmlTestTable FOR XML PATH('Customers') DROP TABLE #XmlTestTable 

разница между сырым и авто
-auto создает имена заголовков, используя имя таблицы, raw использует строку (или вы можете переопределить использование raw ('myname')

-Если запрос имеет соединение, авто создает подсекции для таблицы соединений

разница между сырым и дорожным

– @ символ, предваряемый именем вашего столбца при использовании пути в заголовке строки

– \ символ, префиксный по имени вашего столбца при использовании пути, заполняемого в новых разделах (то же самое, что и соединения, используя авто, но более гибкие)

fab объяснение здесь с легко следовать приведенным здесь примерам: http://thinknook.com/sql-server-returning-xml-results-2012-12-01/