SQL中 FOR XML PATH 函式用法

2022-06-26 20:42:10 字數 3289 閱讀 5228

假設現在有一張興趣愛好表(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('')

查詢結果:

1

2<

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 [ 爬山 ][ 游泳 ][ 美食 ]

view code

增加一張學生表,列分別為(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的...