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 |
+-----------+
示例
以下是在CHARINDEX()函数中将 starting_position 作为参数传递的示例。
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 |
+---------+---------------+