SQL Server STUFF() 函数

17 Mar 2025 | 4 分钟阅读

本文将全面介绍 SQL Server 中的 STUFF 函数。大多数使用 Microsoft SQL Server 的 DBA 都会遇到需要更改已输入数据的一部分的情况。这种情况可能由于人为错误或数据更改而发生。 STUFF 函数用于完成此任务。此函数始终与字符串一起使用,以使用给定的字符或字符串替换字符串的一部分。

SQL Server 也有一个 REPLACE 函数来完成相同的任务。使 STUFF 函数比 REPLACE 函数更受欢迎的区别在于“REPLACE 函数替换所有出现的字符,而 STUFF 函数仅替换特定的子字符串”。

什么是 STUFF() 函数?

SQL Server 中的 STUFF 函数用于从源字符串中删除特定长度的一部分字符,然后从提供的起始位置插入相同的一系列字符。

此函数执行以下任务

  • 它首先从字符串中删除指定长度的字符。 length 选项用于指定字符数。如果我们将值设置为零,则不会从字符串中删除任何字符。
  • 指定字符串中必须抹去由 length 选项定义的字符数的起始位置。
  • 在新子字符串参数中,我们还必须提供替换子字符串。此新字符串将添加到字符串的开头。

语法

以下语法说明了 SQL Server 中的 STUFF 函数

此函数有四个参数,描述如下

Source_string: 它指示我们要修改的原始字符串。

Start: 它指示一个整数值,该值指定删除和插入的开始位置。 如果其值为负数、零或长于字符串的长度,则该函数将返回 NULL。

Length: 它指示将删除多少个字符。 如果长度为负数,则返回 NULL。如果长度大于源字符串的长度,它将删除整个字符串。如果为 0,则将替换子字符串附加到源字符串的开头。

Replace_string: 它指示将添加到给定起始位置删除的子字符串的位置的子字符串。

STUFF() 函数示例

让我们通过各种示例了解 STUFF() 函数在 SQL Server 中的工作原理。

示例 1: 此示例使用 STUFF() 函数在给定位置添加子字符串到源字符串中。以下语句删除字符串“Java Tutorial”的前四个字符,并将其替换为字符串“SQL Server”:

执行该语句后,替换 JAVA 后将显示以下输出

SQL Server STUFF() Function

示例 2: 此示例使用 STUFF 函数添加子字符串,而不删除任何字符。以下语句将在位置 1 插入子字符串 Microsoft,而不会删除任何字符

执行该语句后,将显示以下输出,它成功地在输入字符串的开头添加了 Microsoft

SQL Server STUFF() Function

示例 3: 此示例使用 STUFF 函数将时间从 HHMM 转换为 HH:MM。以下语句将在 HHMM 时间值格式的中间插入一个冒号 (:),并以 HH:MM 格式显示新的时间值

执行该语句后,将显示以下输出,它成功地在 HHMM 的中间添加了冒号 (:)

SQL Server STUFF() Function

示例 4: 此示例使用 STUFF 函数将日期从 MMDDYYY 转换为 MM/DD/YYYY 格式。以下语句将调用该函数两次,并在日期值格式中插入正斜杠 (\),以按 MM/DD/YYY 格式显示新的日期值

执行该语句后,将显示以下输出,它成功地将日期 MMDDYYY 转换为 MM/DD/YYYY 格式

SQL Server STUFF() Function

示例 5: 此示例使用 STUFF 函数,其中起始位置值大于原始字符串长度。假设我们有一个字符串“SQL Server”,长度为十个字符。 让我们看看如果提供起始位置 12,STUFF 函数的结果会是什么?

执行该语句后,将返回以下输出,因为起始位置长于输入字符串

SQL Server STUFF() Function

如果我们在起始位置提供负值,则 STUFF 函数始终返回 NULL 值。 下图更清楚地解释了这一点

SQL Server STUFF() Function

示例 6: 此示例使用 STUFF 函数来屏蔽敏感信息。假设我们要屏蔽信用卡号,只显示最后四个字符。 可以使用 STUFF 函数轻松完成。 这是查询

此查询使用以下函数

  • 它首先声明信用卡号。
  • 接下来,使用 LEN() 函数检查信用卡号的长度。
  • 接下来,从位置 1 开始屏蔽。
  • 最后,从起始编号开始复制,将字符 X 复制到信用卡号长度减去四。

当我们执行该语句时,我们将看到信用卡号仅显示最后四个字符

SQL Server STUFF() Function

结论

本文将详细解释 SQL Server 中的 STUFF 函数。 在这里,我们已经看到了此函数如何通过几个示例在指定位置用另一个字符串替换子字符串。