FOR XML PATH 語句的應用

2021-04-27 17:45:58 字數 3569 閱讀 8027

大家都知道在sql server中利用 for xml path 語句能夠把查詢的資料生成xml資料,下面是它的一些應用示例。

declare

@temptable

table

(userid

int,

username

nvarchar(50

));insert

into

@temptable

(userid

,username

)values(1

,'a'

)insert

into

@temptable

(userid

,username

)values(2

,'b'

)select

userid

,username

from

@temptable

forxml

path

執行這段指令碼,將生成如下結果:

<

row>

<

userid

>

1userid

>

<

username

>

ausername

>

row>

<

row>

<

userid

>

2userid

>

<

username

>

busername

>

row>

select

userid

,username

from

@temptable

forxml

path('

lzy')

再次執行上述指令碼,將生成如下的結果:

<

lzy>

<

userid

>

1userid

>

<

username

>

ausername

>

lzy>

<

lzy>

<

userid

>

2userid

>

<

username

>

busername

>

lzy>

可以看到節點變成,其實path() 括號內的引數是控制節點名稱的,這樣的話大家可以看一下如果是空字串(不是沒有引數)會是什麼結果?

select

userid

,username

from

@temptable

forxml

path(''

) 執行上面這段指令碼將生成結果:

<

userid

>

1userid

>

<

username

>

ausername

>

<

userid

>

2userid

>

<

username

>

busername

>

這樣就不顯示上級節點了,大家知道在 path 模式中,列名或列別名被作為 xpath 表示式來處理,也就是說,是列的名字,這樣大膽試驗一下不給指定列名和別名會是怎麼樣?

select

cast

(userid

asvarchar)+

'',username

+ ''

from

@temptable

forxml

path(''

) 執行上面這句將生成結果

1a2b

select

cast

(userid

asvarchar)+

',',

username

+ '','

;'from

@temptable

forxml

path(''

) 生成結果

1,a;2,b;

select''

from

@temptable

forxml

path(''

) 生成結果

還可以生成其他格式,大家可以根據自己需要的格式進行組合。

declare@t1

table

(userid

int,

username

nvarchar(50

),cityname

nvarchar(50

));insert

into@t1

(userid

,username

,cityname

)values(1

,'a'

,'上海'

)insert

into@t1

(userid

,username

,cityname

)values(2

,'b'

,'北京'

)insert

into@t1

(userid

,username

,cityname

)values(3

,'c'

,'上海'

)insert

into@t1

(userid

,username

,cityname

)values(4

,'d'

,'北京'

)insert

into@t1

(userid

,username

,cityname

)values(5

,'e'

,'上海'

)selectb.

cityname

,left

(userlist

,len

(userlist)-

1)from

(select

cityname,(

select

username+'

,'from@t1

where

cityname=a

.cityname

forxml

path(''

))as

userlist

from@t1

agroup

bycityname)b

生成結果(每個城市的使用者名稱)

北京 b,d

上海 a,c,e

«

FOR XML PATH 語句的應用

大家都知道在sql server中利用 for xml path 語句能夠把查詢的資料生成xml資料,下面是它的一些應用示例。declare temptable table userid int,username nvarchar 50 insert into temptable userid us...

sql查詢語句for xml path語法

for xml path作用 將多行的查詢結果,根據某一些條件合併到一行。例如 現在有一張表 執行下面語句 select department select employee from dbo.people b where b.department a.department for xml path...

FOR XML PATH 的用法介紹

一.for xml path 簡單介紹 那麼還是首先來介紹一下for xml path 假設現在有一張興趣愛好表 hobby 用來存放興趣愛好,表結構如下 接下來我們來看應用for xml path的查詢結果語句如下 select from hobby for xml path 結果 1爬山2 游泳...