SQL - CHARINDEX() 函数



SQL CHARINDEX() 函数从指定位置开始搜索字符串中的子字符串,并返回找到的子字符串的位置。如果未找到子字符串,则此函数返回 0。它接受三个参数,子字符串、字符串(要搜索的字符串)、起始位置(这是一个可选参数)搜索将开始的位置。

我们搜索的子字符串不应超过 8000 个字符。SQL 提供各种字符串类型,即 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET。使用 SQL 中的字符串函数,我们可以操作字符串值。

语法

以下是 SQL CHARINDEX() 函数的语法:

CHARINDEX(substring, string, start)

参数

这里,CHARINDEX() 函数接受三个参数:

  • substring - 要搜索的子字符串,它最多包含 8000 个字符。

  • string - 要搜索的字符串。

  • start - 这是一个可选参数。搜索将开始的位置(如果您不想从字符串的开头开始)。字符串中的第一个位置是 1。

返回值

此函数返回给定字符串中子字符串的位置,如果在字符串中未找到子字符串,则函数返回 0。

示例

以下是一个使用 CHARINDEX() 函数搜索字符的示例。

SELECT CHARINDEX('s', 'Tutorialspoint') As charindex;

输出

执行上述语句后,将产生以下输出:

+-----------+
| charindex |
+-----------+
|     9     |
+-----------+

示例

以下是一个使用 CHARINDEX() 函数搜索子字符串的示例。

SELECT CHARINDEX('educate', 'Tutorialspoint is an online educate company') 
As charindex ;

输出

执行上述语句后,将产生以下输出:

+-----------+
| charindex |
+-----------+
|    29     |
+-----------+

示例

以下是一个搜索子字符串的示例,其中它与给定字符串不匹配。

SELECT CHARINDEX('learning', 'Tutorialspoint is an online educate company') 
As charindex ;

输出

执行上述语句后,将产生以下输出:

+-----------+
| charindex |
+-----------+
|    0      |
+-----------+

示例

以下是一个将starting_position作为参数传递给 CHARINDEX() 函数的示例。

SELECT CHARINDEX('educate', 'Tutorialspoint is an online educate company', 14) 
As charindex ;

输出

执行上述语句后,将产生以下输出:

+-----------+
| charindex |
+-----------+
|    29     |
+-----------+

示例

您可以将表列作为参数传递给CHARINDEX()函数以搜索特定列中的字符。假设我们使用CREATE语句创建了一个名为 Customers 的表,如下所示:

create table CUSTOMERS(
   ID INT NOT NULL, 
   NAME VARCHAR(15) NOT NULL, 
   AGE INT NOT NULL, 
   ADDRESS CHAR(25), 
   SALARY DECIMAL(10, 4), PRIMARY KEY(ID)
);

现在让我们使用 INSERT 语句将条记录插入到 Customers 表中,如下所示:

insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(1, 'Ramesh', 32, 'Ahmedabad', 2000.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(2, 'Khilan', 25, 'Delhi', 1500.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(3, 'kaushik', 23, 'Kota', 2000.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(6, 'Komal', 22, 'MP', 4500.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(7, 'Muffy', 24, 'Indore', 10000.00);

以下 SELECT 查询使用 CHARINDEX() 函数在 CUSTOMERS 表的 NAME 列中搜索字符“a”。

SELECT NAME, CHARINDEX('a', NAME) AS CHAR_INDEX FROM CUSTOMERS;  

输出

以下是上述查询的输出:

+---------+---------------+
|   NAME  |  CHAR_INDEX   |
+---------+---------------+               
|  Ramesh |      2        |
|  Khilan |      5        |
|  kaushik|      2        |
| Chaitali|      3        |
|  Hardik |      2        |
|  Komal  |      4        |
|  Muffy  |      0        |
+---------+---------------+
sql-string-functions.htm
广告