SQL Server Substring17 Mar 2025 | 6 分钟阅读 SUBSTRING 是 SQL Server 中的一个内置函数,它允许我们根据需要从任何给定的字符串集中提取特定的子字符串。数据库开发人员在查询中广泛使用此函数来从输入字符串中提取任意数量的子字符串。Substring 从指定位置开始,从输入字符串中提取指定长度的字符串。此函数的主要目的是返回字符串的特定部分。 Substring 的语法以下是在 SQL Server 中 substring 函数的基本语法 参数此函数的参数说明在此
返回类型如果输入表达式是受支持的字符数据类型之一,则返回字符数据。如果它是二进制数据类型,则此函数返回二进制数据。除了下表中提到的例外情况,我们将获得与指定表达式相同类型的提取的子字符串。
注意事项使用 substring 函数时必须考虑以下规则
支持的版本以下 SQL Server 版本可以使用 SUBSTRING 函数
示例让我们通过各种示例来理解 SUBSTRING 函数在 SQL Server 中的工作原理 1. 带有字面字符串的 Substring 函数 以下语句从输入字符串的第五个字符开始,检索长度为 13 的字符串部分(子字符串)。 它将显示以下输出: ![]() 以下语句检索整个字符串。这是因为当字符串的总长度大于输入字符串的最大字符长度时,生成的子字符串将是表达式的整个字符串。 它将显示以下输出: ![]() 2. 表上的 Substring 函数 要理解 substring 函数在表上的用法,我们首先需要创建一个表。以下语句在选定的数据库中创建一个名为“persons”的表 接下来,我们将如下向此表中插入一些值 我们可以使用 SELECT 语句验证这些值: 它将显示以下输出: ![]() 此语句在“persons”表中的 person_name 和 email 列上使用 SQL Server substring 函数。姓名从第一个位置开始,返回四个字符。电子邮件从第五个位置开始,返回八个字符。 我们将得到下面的输出,其中我们可以看到 p_name 和 sub_mail 是子字符串列 ![]() 3. Substring 函数与 Charindex如果我们要使用 substring 函数查找电子邮件列中存在的域名,我们可以执行以下语句 它将显示以下输出,其中我们可以看到 DomainName 是子字符串列,它返回 @ 符号之后的部分字符串: ![]() 在上面的查询中,我们可以观察到以下函数 此函数查找每个记录中 @ 符号的索引位置,并将索引位置加一,因为域名从下一个位置开始,然后使用 LEN 函数查找电子邮件的长度。最后,substring 函数提取字符串的一部分,并在字符串结束时终止。 这是使用 charindex 的另一个 substring 示例,其中我们将查找电子邮件列中 @ 符号之前的字符串 它将显示以下输出,其中我们可以看到 EmailString 是子字符串电子邮件列,它返回 @ 符号之前的字符串部分 ![]() 4. WHERE 子句中的 Substring SQL Server 中的 substring 函数也可以与 WHERE 子句一起使用。以下语句从 'persons' 表中提取所有州名以“a”结尾的记录 我们将得到以下输出,其中所有记录的州名都以 a 结尾 ![]() 5. Substring 与 LIKE 操作符 LIKE 操作符用于限制从表中返回所有记录。此操作符用于限制 substring 函数,该函数提取所有州名以 York 结尾的记录 我们将得到以下输出,其中所有记录的州名都以 York 结尾 ![]() 6. ORDER BY 子句中的 Substring SQL Server 中的 substring 函数也可以与 ORDER BY 子句一起使用。我们在该子句中使用 substring 函数来使用子字符串结果集对记录进行排序。以下查询将使用 state 列的子字符串对数据进行排序 我们将得到以下输出,其中所有记录的州名都以 York 结尾 ![]() 7. Substring 负索引示例 我们也可以在 SQL Server substring 函数中使用负索引,但这可能没有意义。例如,我们取 substring 索引为 (-2, 3)。这意味着索引从位置 -2 开始,并从此返回 3 个字符。由于我们没有 -2 到 0 的记录(3 条记录),因此该函数将返回从 1 到 3 的字符。 执行该语句,我们将看到以下输出 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。