一、用法:
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
发表评论