STUFF 函数详解
将一个字符串插入另一个字符串。这会从目标字符串中的起始位置开始,删除指定长度的字符,然后在目标字符串中的起始位置处,插入第二个字符串。
STUFF ( character_expression , start , length , character_expression )
参数
- character_expression:一个字符数据表达式。可以是常量、变量,也可以是字符列或二进制数据列。
- start:一个整数值,指定删除和插入的开始位置。如果 start 或 length 为负,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。start 可以是 bigint 类型。
- length:一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。length 可以是 bigint 类型。
返回类型
如果 character_expression 是受支持的字符数据类型,则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型,则返回二进制数据。
备注
如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。如果结果值大于返回类型支持的最大值,则产生错误。
示例
select STUFF('abcdef',1,1,'')
-- 结果: bcdef 相当于把abcdef从第一个位置开始去掉1个字符 然后把去掉后的值插入到后面的字符串
select STUFF('abcdef',1,1,'1234567')
-- 结果: 1234567bcdef 位置从1开始 a是1 b是2 c是3
select STUFF('abcdef',1,2,'1234567')
-- 结果: 1234567cdef 去掉了a和b
select STUFF('abcdef',1,3,'1234567')
-- 结果: 1234567def
select STUFF(',张三,李四,王五',1,1,'')
-- 结果: 张三,李四,王五 这是stuff经常的用法 用来去掉第一个字符 比如逗号Code language: JavaScript (javascript)
实际应用
select stuff(
(
SELECT ','+[学号]
FROM [学生成绩管理系统].[dbo].[学生信息]
FOR XML PATH('')
)
,
1
,
1,
''
)Code language: JavaScript (javascript)
2005010101,2005010102,2005010201,2005010202,2005020101,2005020102,2005020201,2005020202,
2005030101,2005030102,2005040101,2005040102,2005040201,2005040202,2005050101,2005050102,
2005050201,2005050202
Previous: FOR XML PATH
Next: LTRIM 与 RTRIM 函数