应用背景
以一个MES项目为例,我们设计制程工序的时候为了方便拓展,会以竖表来设计,例如:(1:制程1、2:制程2 ......),这个时候客户又要求查询的时候将制程连接起来,中间以某种符号隔开;这时候我们通常有两种思路1、第一种:直接查询出来,用代码循环拼接,再赋值给某个变量;第二种思路:就是用STUFF函数,直接SQL处理,本人比较推荐第二种;
主要思路:运用 stuff 函数
SELECT stuff((
SELECT ‘-’+NAME FROM TABLENAME
FOR XML PATH(‘’)),1,1,‘’) AS SPLITNAME
stuff 函数参数介绍
第一个参数string,指的就是你要操作的内容,可以是一个固定字符串,也可以指定为某列;
第二个参数insert position,指插入开始位置,SQLSERVER中默认是从1开始,而非从0开始;
第三个参数delete count,指的是要删除的字符个数,从position删除指定的个数,如果count为0表示不删除;
第四个参数string inserted,表示要插入的字符串;
stuff简单的示例
select stuff(‘zcdtt11’,3,2,‘charu’);