MySQL FIND_IN_SET() 函数
MySQL FIND_IN_SET() 函数用于在列表中搜索特定字符串,该列表包含以逗号分隔的子字符串。
此函数接受两个参数:要搜索的字符串或数字,以及执行搜索的字符串或数字列表。
语法
以下是 MySQL FIND_IN_SET() 函数的语法 -
FIND_IN_SET(string,stringlist)
参数
此函数接受一个搜索字符串和一个以逗号分隔的字符串列表作为参数。
返回值
此函数返回列表中第一次出现的搜索字符串的索引,如果未找到则返回 0。
示例
在下面的示例中,我们使用 FIND_IN_SET() 函数查找"JavaFX"在编程列表中的位置语言 −
SELECT FIND_IN_SET('JavaFX', 'Java,JavaFX,OpenCV,WebGL');
以下是上述代码的输出 -
| FIND_IN_SET('JavaFX', 'Java,JavaFX,OpenCV,WebGL') |
|---|
| 2 |
示例
如果我们搜索的字符串不在字符串列表中,field_in_set() 函数将返回 0 -
SELECT FIND_IN_SET('unknown', 'Java,JavaFX,OpenCV,WebGL');
上述代码的输出如下所示 -
| FIND_IN_SET('unknown', 'Java,JavaFX,OpenCV,WebGL') |
|---|
| 0 |
示例
如果我们在列表中搜索 NULL 值,FIND_IN_SET() 函数将返回 NULL -
SELECT FIND_IN_SET(NULL, 'Java,JavaFX,OpenCV,WebGL');
获得的输出如下 -
| FIND_IN_SET(NULL, 'Java,JavaFX,OpenCV,WebGL') |
|---|
| NULL |
示例
您也可以将数字列表作为参数传递给此函数,并搜索所需的值 -
SELECT FIND_IN_SET('25',' 225,669,557,25,66');
生成的结果如下 -
| FIND_IN_SET('25',' 225,669,557,25,66') |
|---|
| 4 |
示例
让我们创建一个名为"STUDENT_TABLE"的表,并使用 CREATE 和 INSERT 语句向其中插入记录,如下所示 -
CREATE TABLE STUDENT_TABLE ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, courses VARCHAR(100) NOT NULL, PRIMARY KEY (id) );
现在,让我们使用 INSERT 语句将记录插入其中 -
INSERT INTO STUDENT_TABLE (name, courses) VALUES
('Varun', 'Math,Science,English'),
('Vaidhya', 'Science,Art'),
('Siddhu', 'Math,History,Art'),
('Priya', 'English,History'),
('Nikhil', 'Science,Math');
获得的STUDENT_TABLE如下-
| id | name | courses |
|---|---|---|
| 1 | Varun | Math,Science,English |
| 2 | Vaidhya | Science,Art |
| 3 | Siddhu | Math,History,Art |
| 4 | Priya | English,History |
| 5 | Nikhil | Science,Math |
以下查询使用 MySQL 的 FIND_IN_SET() 函数检索所有选修了"Math"课程的学生 -
SELECT name, courses FROM STUDENT_TABLE
WHERE FIND_IN_SET('Math', courses);
执行上述代码后,我们得到以下输出 -
| name | courses |
|---|---|
| Varun | Math,Science,English |
| Siddhu | Math,History,Art |
| Nikhil | Science,Math |
mysql-find-in-set-function.html