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.htm
广告