假設現在有一張興趣愛好表(hobby)用來存放興趣愛好,表結構如下:
按xml格式輸出查詢結果
select
*from dbo.hobby for
xml path
--自定義xml行節點名稱
select
*from dbo.hobby for xml path('
myhobby')
--自定義xml列節點名稱
select hobbyid as
'mycode
', hname as
'myname
'from dbo.hobby for xml path('
myhobby')
--對字串型別字段自定義輸出格式
select'[
'+hname+']
'from dbo.hobby for xml path('')--
對其他型別的列自定義輸出格式:將它們轉換成字串格式
select
'','[ '
+hname+']
'from dbo.hobby for xml path('')
查詢結果:
1view code2<
row>
3<
hobbyid
>1
hobbyid
>
4<
hname
>爬山
hname
>
5row
>
6<
row>
7<
hobbyid
>2
hobbyid
>
8<
hname
>游泳
hname
>
9row
>
10<
row>
11<
hobbyid
>3
hobbyid
>
12<
hname
>美食
hname
>
13row
>
1415
16<
myhobby
>
17<
hobbyid
>1
hobbyid
>
18<
hname
>爬山
hname
>
19myhobby
>
20<
myhobby
>
21<
hobbyid
>2
hobbyid
>
22<
hname
>游泳
hname
>
23myhobby
>
24<
myhobby
>
25<
hobbyid
>3
hobbyid
>
26<
hname
>美食
hname
>
27myhobby
>
2829
30<
myhobby
>
31<
mycode
>1
mycode
>
32<
myname
>爬山
myname
>
33myhobby
>
34<
myhobby
>
35<
mycode
>2
mycode
>
36<
myname
>游泳
myname
>
37myhobby
>
38<
myhobby
>
39<
mycode
>3
mycode
>
40<
myname
>美食
myname
>
41myhobby
>
4243
44[ 爬山 ][ 游泳 ][ 美食 ]
4546
47 [ 爬山 ][ 游泳 ][ 美食 ]
增加一張學生表,列分別為(stuid,sname,hname),stuid代表學生編號,sname代表學生姓名,hobby列存學生的愛好,表結構如下:
以「愛好1,愛好2,愛好3...」的格式顯示資料
--查詢結果:顯示所有學生的愛好的結果集
select
a.sname,
(select hname+',
'from
dbo.studenthobby
where sname=a.sname for xml path('')) as
hobbylist
from
dbo.studenthobby a
group
bya.sname
--去除逗號顯示
select b.sname, left(b.hobbylist, len(b.hobbylist)-
1) as stuhobby from
(
select
a.sname,
(select hname+',
'from
dbo.studenthobby
where sname=a.sname for xml path('')) as
hobbylist
from
dbo.studenthobby a
group
bya.sname
)b
sql查詢語句for xml path語法
for xml path作用 將多行的查詢結果,根據某一些條件合併到一行。例如 現在有一張表 執行下面語句 select department select employee from dbo.people b where b.department a.department for xml path...
SQL字串拼接FOR XML PATH
在工作中難免會遇到資料庫中資料要進行拼接的問題,字串拼接可以是用sql的拼接也可以使用c 的拼接,本次說的是使用sql進行拼接。首先插入測試語句 測試語句,準備建立表的語句 如下 create table dbo.test3 id intidentity 1,1 not null primary k...
sql中nvl,cast,power等常用函式
1 nvl 表示式1,表示式2 如果1為空,則該函式取表示式2的值 如 b nvl a,0 如果a值為空,b取0 2 nvl 表示式1,表示式2,表示式3 如果1有值,取2,如果1為空,取表示式3的值 總之 如果1為空,都取最後乙個引數的值 3 power用法 power a,b 這是求冪次方,a的...