SQL Server 中的 CHARINDEX 函数对于处理和操作字符串数据很有用。 它最常用于定位字符串中子字符串或表达式的开始位置。 简单来说,我们可以说这个函数用于从指定位置搜索字符串中的指定字符或字符。 一个字符可以出现在字符串中的多个位置。 此函数将返回字符串中的第一个字符位置并忽略其余匹配的字符位置。
让我们通过下面的例子来理解这个函数的概念。
招聘公司的在线门户是解释其概念的一个很好的例子。 招聘公司会收集每个学生或客户的详细信息,并为他们提供安置帮助。 假设公司老板需要查看每个员工的电子邮件地址格式是否正确; 在这种情况下,他们可以通过使用CHARINDEX()函数来做到这一点。 例如,他们可以验证字符 '@' 是否存在于输入的邮件 ID 中。
用法
以下是说明 SQL Server 中 CHARINDEX 函数的基本语法:
CHARINDEX ( expression_to_find , expression_to_search [ , starting_position ] )
我们可以在CHARINDEX函数中看到如下参数:
expression_to_find:它是定义我们要在另一个字符串中查找的字符或字符串的必需参数。
expression_to_search:它是一个必需参数,指示我们将在其中搜索子字符串的字符串或表达式。
starting_position:这是一个可选参数,它采用整数值来指定搜索字符串的起始位置。 如果我们想在给定的字符串中搜索子字符串,我们需要指定一个起始位置。 但是,如果我们不为此参数指定值,则默认情况下,它将从索引位置 0 开始搜索。 如果我们将其指定为 0 或负值,该函数也将从头开始搜索字符串。
返回
此函数返回给定表达式或字符串中子字符串的位置。
如果子字符串不包含在字符串中,该函数将返回 0。
支持的版本
CHARINDEX 函数将适用于以下 SQL Server 版本:
SQL Server 2019、SQL Server 2018、SQL Server 2017、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2008 R2、SQL Server 2008、SQL Server 2005、Azure SQL 数据库、Azure SQL 数据仓库和并行数据仓库.
注意:CHARINDEX 函数可以在不打扰区分大小写或不区分大小写的字符的情况下执行搜索。
CHARINDEX 函数示例
让我们了解 CHARINDEX 函数在 SQL Server 中的工作原理。
1. CHARINDEX 函数用于单次搜索
下面的示例将使用 CHARINDEX 函数在给定的字符串 'SQL Tutorial Javatpoint' 中找到一个搜索字符串 'SQL' 并返回其位置:
SELECT CHARINDEX('SQL', 'SQL Tutorial Javatpoint') AS Position;
执行该语句将显示以下输出 :
SQL Server CHARINDEX() Function
2. 搜索字符串中的一个字符位置
此示例将给出 @ 字符在指定电子邮件地址中的位置。
SELECT CHARINDEX ('@','[email protected]') as 'CharacterPosition'
执行该语句将显示以下输出 :
SQL Server CHARINDEX() Function
3.在字符串中执行不区分大小写的搜索
此示例将返回指定字符串中搜索字符串的位置,而无需区分大小写:
SELECT CHARINDEX('SERVER', 'SQL server Tutorial Javatpoint') AS Position;
执行该语句将显示以下输出 :
SQL Server CHARINDEX() Function
4. 使用 COLLATE 子句执行区分大小写的搜索
此示例显示使用 COLLATE 子句在搜索字符串 'SQL server Tutorial Javatpoint' 中对字符串 'SERVER' 进行区分大小写的搜索。
SELECT CHARINDEX('SERVER',
'SQL server Tutorial Javatpoint'
COLLATE Latin1_General_CS_AS
) AS Position;
执行该语句将显示以下输出,因为它在指定的字符串中不包含字符串 “SERVER”。
SQL Server CHARINDEX() Function
5. 搜索不存在的子串
下面的示例在字符串 'Javatpoint is best for learning java' 中搜索子字符串 'JavaScript':
DECLARE @str VARCHAR(50);
SELECT @str = 'Javatpoint is best for learning java';
SELECT CHARINDEX('JavaScript', @str) AS Position;
执行该语句将显示以下输出 :
SQL Server CHARINDEX() Function
6. 搜索多个匹配的子串
下面的示例执行搜索指定字符串中具有多个匹配项的子字符串。 这里我们要搜索java并找到它的位置。
DECLARE @str VARCHAR(50);
SELECT @str = 'It is best to learn java on Javatpoint. Java is best for backend programming';
SELECT CHARINDEX('Java', @str) AS Position;
执行该语句将返回第一个匹配的子串位置:
SQL Server CHARINDEX() Function
7. CHARINDEX 函数从特定位置开始搜索
在本例中,我们将使用 starting_position 参数在给定字符串的第十个字符处开始搜索子字符串 'for':
SELECT CHARINDEX ('for', 'Love for all, Hate for none', 10) As Position;
执行该语句将显示以下输出 :
SQL Server CHARINDEX() Function
标签:函数,Server,CHARINDEX,搜索,SQL,字符串 From: https://www.cnblogs.com/nuomibaibai/p/17502555.html