SQL SERVER的for xml path函数

这两天在处理一个字符串拼接遇到一个问题:

老师姓名 学科
张老师 语文
张老师 数学
张老师 英语
李老师 体育
李老师 音乐
需要将上面的记录转换成:

老师姓名 学科
张老师 语文,数学,英语,
李老师 体育,音乐,
想了一些办法来处理,都感觉不是很好,后来发现SqlServer有一个for xml path的函数,挺不错的。下面就简单的说说。

一、FOR  XML  PATH  基本运用

select teacher,object from teach

利用for  xml  path后:

select teacher,object from teach for xml path

二、改变XML行节点的名称

a、根节点默认是,我们可以通过path后面的参数改变根节点名称:

select teacher,object from teach for xml path('记录')

一个小技巧: 可以通过path('')来去掉根节点

select teacher,object from teach for xml path('')

b、改变字节点名称:

改变子节点名称就是给我们的记录起别名:

select teacher as '老师',object as '学科' from teach for xml path('')

一个小技巧:通过符号+号,来对字符串类型字段的输出格式进行定义

select '['+teacher+']' ,'['+object+']' from teach for xml path('')

三、字符串拼接应用

通过上面的步骤,基本可以完成文章开头的问题了:

select teacher as '老师',
(select  object+','  from  teach  t1 where  t1.teacher=t2.teacher   FOR xml path ('')) as '学科'
from  teach t2
group by  teacher

原文链接:https://blog.csdn.net/a275838263/article/details/51118866

posted @ 2021-05-04 23:10  QAQhong  阅读(661)  评论(0编辑  收藏  举报