SQL FOR XML子句的各種用法

2021-09-30 09:49:19 字數 2410 閱讀 1818

for xml子句有四種最基本的模式 

1、auto模式:返回資料表為起錶名的元素,每一列的值返回為屬性;

2、raw模式:返回資料行為元素,每一列的值作為元素的屬性; 

3、path模式:通過簡單的xpath語法來允許使用者自定義巢狀的xml結構、元素、屬性值 

4、explicit模式:通過select語法定義輸出xml的結構

第1步:構造測試資料表及填充資料: 

--1.建表語句 

create table [dbo].[users](

[userid] [int] identity(1,1) not null, 

[firstname] [nvarchar](50) null,

[lastname] [nvarchar](50) null

)  --2.產生隨機數sql函式

create function [generaterandomitem] ( @length int )

returns nvarchar(255)

as begin

--申明變數

declare @randomnumber nvarchar(255)

declare @i smallint

declare @randnumber float

declare @position tinyint

declare @extractedcharacter varchar(1)

declare @validcharacters varchar(255)

declare @vclength int

--給變數賦值

set @validcharacters = 'abcdefghijklmnopqrstuvwxyz'

set @vclength = len(@validcharacters)

set @extractedcharacter = ''

set @randnumber = 0

set @position = 0

set @randomnumber = ''

set @i = 1

while @i < ( @length + 1 )

begin

set @randnumber = (select randnumber from [randnumberview])

set @position = convert(tinyint, ( ( @vclength - 1 )* @randnumber + 1 ))

select @extractedcharacter = substring(@validcharacters,@position, 1)

set @i = @i + 1

set @randomnumber = @randomnumber + @extractedcharacter

endreturn @randomnumber

endgocreate view [randnumberview]

as

select rand() as [randnumber]

--3.新增測試資料

insert into users  

(

firstname ,

lastname

) select

dbo.generaterandomitem(10),

dbo.generaterandomitem(10)

go 10

--4.測試查詢

1.auto模式:

語句: select userid, firstname,lastname from users for xml auto, xmlschema

說明:加上xmlschema,輸出xml架構,不加則只輸出資料。

輸出:

2.raw模式:

語句:select userid, firstname,lastname from users for xml raw ('myusers')

說明:將元素命名為自定義的名稱

輸出:3.path模式:

語句: select userid "@id", firstname "name/firstname",lastname "name/lastname" from users

for xml path ('myusers')

說明:可以指定xml結構

輸出:4.explicit模式:(研究中,暫略... ... )

IN操作符與LIKE子句 各種查詢

in操作符與like子句 各種查詢 一 指定範圍的判斷 in操作符 www.2cto.com in操作符表示的是指定乙個查詢的範圍,例如,現在有如下乙個查詢要求 範例 查詢出雇員編號是7369 7566 7799的雇員資訊 如果按照最早的做法,使用or操作完成 select from emp whe...

連線查詢中的ON 子句和 WHERE 子句

先看兩張表結構 produc表 問題是下面兩個查詢結果有什麼不同 1.select from product left join product details on product.id product details.id and product details.id 2 2.select fr...

Android用WebView遇到的各種問題

在專案裡某些頁面是用webview載入的 h5頁面,h5頁面與原生結合往往出現很多問題,下面把最近遇到的問題記錄一下。一 標題是原生,h5頁面又 內嵌了幾層。webview呼叫goback 有的機型手機不走onreceivedtitle 方法。客戶端原生做的標題title需要跟h5頁面的標題一致。原...