檢查字串是否包含 MySQL 中的某些資料

Preet Sanghavi 2023年1月30日
  1. 使用 MySQL 中的 LOCATE 函式檢查字串是否包含 MySQL 中的某些資料
  2. 使用 MySQL 中的 INSTR 函式檢查 MySQL 中的字串是否包含某些資料
  3. 使用 MySQL 中的 LIKE 運算子檢查 MySQL 中的字串是否包含某些資料
檢查字串是否包含 MySQL 中的某些資料

在本教程中,我們旨在探索檢查 MySQL 表中包含的字串的不同方法。

我們將在 MySQL 中介紹以下技術。

  • INSTR 函式
  • LOCATE 函式
  • LIKE 運算子

然而,在我們開始之前,我們建立了一個虛擬資料集來使用。在這裡,我們建立了一個表,student_details,以及其中的幾行。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

上面的查詢建立了一個表以及其中包含學生名字和姓氏的行。為了檢視資料中的條目,我們使用以下程式碼。

SELECT * FROM student_details;

上面的程式碼將給出以下輸出。

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

讓我們的目標是找到所有姓氏中包含 Parker 一詞的學生。

使用 MySQL 中的 LOCATE 函式檢查字串是否包含 MySQL 中的某些資料

MySQL 中的 locate 函式一般有 2 個引數,比如 LOCATE(substr, str)。這裡,substr 是作為第一個引數傳入的子字串,而 str 是作為第二個引數傳入的字串。LOCATE 函式的輸出是出現作為引數傳遞的字串的第一行。要檢視此函式的執行情況,請檢視下面的程式碼。

-- finding the word 'Park' from the table where the last name of the student is Park.
SELECT * FROM student_details WHERE LOCATE('Park', stu_lastName) > 0 ;

上面的程式碼將給出以下輸出:

stu_id	stu_firstName	stu_lastName
6	      Sachin	      Parker

使用 MySQL 中的 INSTR 函式檢查 MySQL 中的字串是否包含某些資料

與 LOCATE 函式類似,INSTR 函式 INSTR(str, substr) 接受 2 個引數。但是,該函式返回字串第一次出現在作為引數傳入的子字串中的索引值。這裡,str 是作為第一個引數傳入的字串,而 substr 是作為第二個引數傳入的子字串。要檢視此函式的執行情況,請檢視下面的程式碼。

-- finding the word 'Park' from the table where the last name of the student is Park.
SELECT * FROM student_details WHERE INSTR(stu_lastName , 'Parker') > 0;

上面的程式碼將給出以下輸出。

stu_id	stu_firstName	stu_lastName
6	      Sachin	      Parker
注意
LOCATE(substr,str)INSTR(str,substr) 函式中傳遞引數的方式是不同的。

使用 MySQL 中的 LIKE 運算子檢查 MySQL 中的字串是否包含某些資料

在資料中查詢字串是否存在的另一種替代方法是使用 LIKE。此運算子與 WHERE 子句一起使用以查詢特定字串。要檢視此技術的實際效果,請檢視下面的程式碼。

-- finding the word 'Park' from the table where the last name of the student is Parker.
SELECT * FROM student_details WHERE stu_lastName LIKE 'Parker' ;

上面的程式碼將再次給出以下輸出。

stu_id	stu_firstName	stu_lastName
6	      Sachin	      Parker

此外,%,也稱為萬用字元,也與 LIKE 運算子一起使用。顧名思義,這個萬用字元代表無、一個或多個字元。要檢視此萬用字元的實際效果,請檢視下面的程式碼。

-- finding the student with last name ending in 'arker' from the table.
SELECT * FROM student_details WHERE stu_lastName LIKE '%arker' ;

上面的程式碼將再次給出以下輸出。

stu_id	stu_firstName	stu_lastName
6	      Sachin	      Parker

因此,藉助上述三種技術,我們可以有效地從表中找到字串的存在。

作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相關文章 - MySQL Query