STUFF(param1, startIndex, length, param2)
将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符。
示例:
select STUFF('abcdefg',1,0,'1234') --结果为'1234abcdefg' select STUFF('abcdefg',1,1,'1234') --结果为'1234bcdefg'
for xml path 将查询结果集以XML形式展现
示例:
假设有个表存放着学生的选课情况(stu_courses):
select stu_name,stu_course from stu_courses for xml path;
<row> <stu_name>张三</stu_name> <stu_course>语文</stu_course> </row> <row> <stu_name>张三</stu_name> <stu_course>数学</stu_course> </row> <row> <stu_name>张三</stu_name> <stu_course>英语</stu_course> </row> <row> <stu_name>李四</stu_name> <stu_course>数学</stu_course> </row> <row> <stu_name>李四</stu_name> <stu_course>语文</stu_course> </row>
for xml path(''); 去掉每一行的<row></row>
示例:
select stu_course from stu_courses for xml path;
<row>语文</row> <row>数学</row> <row>英语</row>
select ,stu_course from stu_courses for xml path;
<row>,语文</row> <row>,数学</row> <row>,英语</row>
select ,stu_course from stu_courses for xml path('');
,语文,数学,英语
stuff与for xml path('')联合使用
select stuff(( select ,stu_course from stu_courses for xml path('')),1,1,'');
加stuff是为了去掉第一个逗号
语文,数学,英语
示例:将一个表的一个列的多行内容拼接成一行
结合group by
select stu_name,stuff(( select ,stu_course from stu_courses for xml path('')),1,1,'') from stu_courses group by stu_name;
张三 语文,数学,英语 李四 语文,数学