一、用法:
STUFF函数:
a.作用
stuff(param1, startIndex, length, param2)
将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符。
b.参数
param1
一个字符数据表达式。param1可以是常量、变量,也可以是字符列或二进制数据列。
startIndex
一个整数值,指定删除和插入的开始位置。如果 startIndex或 length 为负,则返回空字符串。如果startIndex比param1长,则返回空字符串。startIndex可以是 bigint 类型。
length
一个整数,指定要删除的字符数。如果 length 比param1长,则最多删除到param1 中的最后一个字符。length 可以是 bigint 类型。
c.返回类型
如果param1是受支持的字符数据类型,则返回字符数据。如果param1是一个受支持的 binary 数据类型,则返回二进制数据。
d.备注
如果结果值大于返回类型支持的最大值,则产生错误。
FOR XML PATH 将查询结果集以XML形式展现
select stuff((select ',' + CAST(id as varchar(4)) from org_structure where pid = cte.id for xml path('')), 1, 1, '') as childids,cte.name from cte二、示例:
with class as
(
select v.id,
v.name as classes_name,
inf.font_color as classes_font_color
from scheduling_classes_version v left join scheduling_classes_info inf on v.class_id=inf.id
)
select a.id,
a.user_code,
a.work_date,
a.classes_version_id,
stuff(
(select ',' + CAST(class.classes_name as varchar(100)) from class where class.id
in (select * from Fun_SplitStr(a.classes_version_id,','))
for xml path('')
), 1, 1, ''
) as classes_name,
stuff(
(select ',' + CAST(class.classes_font_color as varchar(100)) from class where class.id
in (select * from Fun_SplitStr(a.classes_version_id,','))
for xml path('')
), 1, 1, ''
) as classes_font_color
from scheduling_info a


发表评论