转载---SQL Server XML基础学习2之--FOR XML AUTO/RAW
本文主要介紹FOR XML 的?AUTO 模式和 RAW 模式
?
?
--AUTO 模式將查詢結果以嵌套 XML 元素的方式返回。這不能較好地控制從查詢結果生成的 XML 的形式。
--如果要生成簡單的層次結構,AUTO 模式查詢很有用。
--但是,使用 EXPLICIT 模式和使用 PATH 模式在確定從查詢結果生成的 XML 的形式方面可提供更好的控制和更大的靈活性。
--> 測試數據:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL?
? ?DROP TABLE #tb
GO?
CREATE TABLE #tb
? ? ? ?(
? ? ? ? [id] INT IDENTITY PRIMARY KEY ,
? ? ? ? [name] VARCHAR(4),
? ? ? ? [type] VARCHAR(10)
? ? ? ?)
INSERT ?#tb
? ? ? ? SELECT ?'彪' , '流氓'
? ? ? ? UNION ALL
? ? ? ? SELECT ?'阿紫' , '流氓'
? ? ? ? UNION ALL
? ? ? ? SELECT ?'小強' , '流氓'
? ? ? ? UNION ALL
? ? ? ? SELECT ?'光輝' , '臭流氓'
? ? ? ? UNION ALL
? ? ? ? SELECT ?'小D' , '臭流氓'
? ? ? ? UNION ALL
? ? ? ? SELECT ?'野子' , '臭流氓'
--------------開始查詢--------------------------
SELECT * FROM #tb FOR XML AUTO
/*
<_x0023_tb id="1" name="彪" type="流氓" />
<_x0023_tb id="2" name="阿紫" type="流氓" />
<_x0023_tb id="3" name="小強" type="流氓" />
<_x0023_tb id="4" name="光輝" type="臭流氓" />
<_x0023_tb id="5" name="小D" type="臭流氓" />
<_x0023_tb id="6" name="野子" type="臭流氓" />
*/
--ELEMENTS 選項,將返回以元素為中心的 XML。
SELECT * FROM #tb FOR XML AUTO,ELEMENTS
/*
<_x0023_tb>
? <id>1</id>
? <name>彪</name>
? <type>流氓</type>
</_x0023_tb>
<_x0023_tb>
? <id>2</id>
? <name>阿紫</name>
? <type>流氓</type>
</_x0023_tb>
<_x0023_tb>
? <id>3</id>
? <name>小強</name>
? <type>流氓</type>
</_x0023_tb>
<_x0023_tb>
? <id>4</id>
? <name>光輝</name>
? <type>臭流氓</type>
</_x0023_tb>
<_x0023_tb>
? <id>5</id>
? <name>小D</name>
? <type>臭流氓</type>
</_x0023_tb>
<_x0023_tb>
? <id>6</id>
? <name>野子</name>
? <type>臭流氓</type>
</_x0023_tb>
*/
=
--RAW 模式將查詢結果集中的每一行轉換為帶有通用標識符 <row> 或可能提供元素名稱的 XML 元素。
--默認情況下,行集中非 NULL 的每列值都將映射為 <row> 元素的一個屬性。
--如果將 ELEMENTS 指令添加到 FOR XML 子句,則每個列值都將映射到 <row> 元素的子元素。
--指定 ELEMENTS 指令之后,您還可以選擇性地指定 XSINIL 選項以將結果集中的 NULL 列值映射到具有 xsi:nil="true" 屬性的元素。
SELECT * FROM #tb FOR XML RAW?
/*
<row id="1" name="彪" type="流氓" />
<row id="2" name="阿紫" type="流氓" />
<row id="3" name="小強" type="流氓" />
<row id="4" name="光輝" type="臭流氓" />
<row id="5" name="小D" type="臭流氓" />
<row id="6" name="野子" type="臭流氓" />
*/
--使用 XMLDATA 和 XMLSCHEMA 選項作為結果請求架構?
SELECT * FROM #tb FOR XML RAW, XMLDATA ;
--檢索二進制數據?
DECLARE @a VARBINARY(10)=0x78786F6F
SELECT @a AS 'VARBINARY' FOR XML RAW,BINARY BASE64
--結果為base64 編碼的二進制數據
/*
XML_F52E2B61-18A1-11d1-B105-00805F49916B
<row VARBINARY="eHhvbw=="/>
*/
--對于結果集中的每一行,RAW 模式都生成一個元素 <row>。
--您可以通過向 RAW 模式指定一個可選參數為該元素指定另一個名稱,如該查詢中所示。
SELECT * FROM #tb FOR XML RAW('流氓們')
--AUTO 模式和 RAW 模式都可以使用 ROOT , ELEMENTS XSINIL, TYPE 指令,這里就不一一列舉了
轉載于:https://www.cnblogs.com/Frank99/p/5974469.html
總結
以上是生活随笔為你收集整理的转载---SQL Server XML基础学习2之--FOR XML AUTO/RAW的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OAuth2 理解
- 下一篇: 黄金白银、古董与收藏