大家都知道在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>
大家可以看到兩行資料生成了兩個節點,修改一下path的引數:
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 游泳...