文章目录

  • ​​第134章 SQL函数 STUFF​​
  • ​​大纲​​
  • ​​参数​​
  • ​​描述​​
  • ​​REPLACE 和 STUFF​​
  • ​​示例​​

第134章 SQL函数 STUFF

字符串函数,用于替换字符串中的子字符串。

大纲

STUFF(string,start,length,substring)

参数

  • ​string​​ - 作为子字符串替换目标的字符串表达式。
  • ​start​​​ - 替换的起点,指定为正整数。从字符串开头开始的字符数,从​​1​​​ 开始计数。允许的值为​​0​​​ 到字符串的长度。要追加字符,请指定​​0​​​ 的开头和​​0​​​ 的长度。空字符串或非数字值被视为​​0​​。
  • ​length​​​ - 要替换的字符数,指定为正整数。要插入字符,请将长度指定为​​0​​​。要在开始后替换所有字符,请指定大于现有字符数的长度。空字符串或非数字值被视为​​0​​。
  • ​substring​​ - 一个字符串表达式,用于替换由其起始点和长度标识的子字符串。可以比它替换的子字符串更长或更短。可以是空字符串。

描述

​STUFF​​ 用另一个子字符串替换一个子字符串。它标识要替换为位置和长度的子字符串,并将其替换为子字符串。

此函数提供与 ​​Transact-SQL​​ 实现的兼容性。

替换子字符串可能比原始值长或短。要删除原始值,子字符串可以是空字符串 (​​''​​)。

起始值必须在字符串的当前长度范围内。您可以通过指定起始值 ​​0​​​ 将子字符串附加到字符串的开头。空字符串或非数字值被视为 ​​0​​。

为 ​​start​​​、​​length​​​ 或 ​​substring​​​ 参数指定 ​​NULL​​​ 将返回 ​​NULL​​。

​STUFF​​​ 不能将 ​​%Stream.GlobalCharacter​​​ 字段用于字符串或子字符串参数。尝试这样做会生成 ​​SQLCODE -37​​ 错误。

REPLACE 和 STUFF

​REPLACE​​​ 和 ​​STUFF​​​ 都执行子字符串替换。 ​​REPLACE​​​ 按数据值搜索子字符串。 ​​STUFF​​ 按字符串位置和长度搜索子字符串。

示例

以下示例显示了单字符替换,将 ​​BOLT​​​ 转换为 ​​BELT​​:

SELECT STUFF('BOLT',2,1,'E')

BELT

以下示例将一个 ​​8​​​ 个字符的子字符串 (​​Kentucky​​​) 替换为一个较长的 12 个字符的子字符串和一个较短的 ​​2​​ 个字符的子字符串:

SELECT STUFF('In my old Kentucky home',11,8,'Rhode Island'),
STUFF('In my old Kentucky home',11,8,'KY')

In my old Rhode Island home In my old KY home

以下示例插入一个子字符串:

SELECT STUFF('In my old Kentucky home',19,0,' (KY)')

In my old Kentucky (KY) home

以下示例将一个子字符串附加到字符串的开头:

SELECT STUFF('In my old Kentucky home',0,0,'The sun shines bright ')

The sun shines bright In my old Kentucky home

以下示例通过将 ​​8​​ 个字符的子字符串替换为空字符串来删除它:

SELECT STUFF('In my old Kentucky home',11,8,'')

In my old home