STUFF 函数

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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注