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
廣告