在本教程中,将学习如何使用SQL Server SUBSTRING()
函数从字符串中提取子字符串。
SQL Server SUBSTRING()函数简介
SUBSTRING()
从输入字符串中的位置开始提取具有指定长度的子字符串。
以下是SUBSTRING()
函数的语法:
SUBSTRING(input_string, start, length);
在这个语法中:
input_string
可以是字符,二进制,文本,ntext
或图像表达式。start
是一个整数,指定返回的子字符串的起始位置。 请注意,input_string
中的第一个字符是1
,而不是0
。length
是一个正整数,指定要返回的子字符串的字符数。 如果长度为负,则SUBSTRING()
函数会引发错误。 如果start + length> input_string
的长度,子字符串将从开始处开始并包含input_string
的其余字符。
SQL Server SUBSTRING()示例
下面举一些使用SUBSTRING()
函数来了解它如何工作的例子。
1. SUBSTRING()函数使用带文字字符串
此示例在"SQL Server SUBSTRING"
字符串中从第五个字符开始提取长度为6
的子字符串。
SELECT
SUBSTRING('SQL Server SUBSTRING', 5, 6) result;
执行上面查询语句,得到以下结果:
result
------
Server
(1 row affected)
2. 将SUBSTRING()函数与表列一起使用
下面将使用示例数据库中的sales.customers
表进行演示。
此示例使用SUBSTRING()
函数从客户的电子邮件地址中提取域:
SELECT
email,
SUBSTRING(
email,
CHARINDEX('@', email)+1,
LEN(email)-CHARINDEX('@', email)
) domain
FROM
sales.customers
ORDER BY
email;
执行上面查询语句,得到以下结果:
上面语句如怎么运行?
首先,使用CHARINDEX()
函数在电子邮件中搜索"@"
字符。 域名将从"@"
字符加1
开始。
然后,使用CHARINDEX()
函数的结果来确定:
- 域名的起始位置:
CHARINDEX('@', email) + 1
- 域名的长度:
LEN(email)-CHARINDEX('@', email)
要计算每个域的电子邮件数,可以使用以下查询:
SELECT
SUBSTRING(
email,
CHARINDEX('@', email)+1,
LEN(email)-CHARINDEX('@', email)
) domain,
COUNT(email) domain_count
FROM
sales.customers
GROUP BY
SUBSTRING(
email,
CHARINDEX('@', email)+1,
LEN(email)-CHARINDEX('@', email)
);
执行上面查询语句,得到以下结果:
在本教程中,学习了如何使用SQL Server SUBSTRING()
函数从字符串中提取字符。