Heim  >  Artikel  >  Datenbank  >  Mysql字符串字段判断是否包含某个字符串的2种方法_MySQL

Mysql字符串字段判断是否包含某个字符串的2种方法_MySQL

WBOY
WBOYOriginal
2016-06-01 13:04:511868Durchsuche

假设有个表:

 

代码如下:


CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),user_name VARCHAR(20) NOT NULL,emails VARCHAR(50) NOT NULL);

 

初始化表,并添加些记录。 

代码如下:


truncate table users
INSERT INTO users(user_name, emails) VALUES('小张','a@email.com,b@email.com,c@email.com');
INSERT INTO users(user_name, emails) VALUES('小王','aa@email.com,bb@email.com,cc@email.com');

  

 

Mysql 中有些字段是字符串类型的,如何查找其中包含某些字符的记录呢?

方法一:

代码如下:


SELECT * FROM users WHERE emails like "%b@email.com%";

 

这样bb@email.com的用户也查出来了,不符合预期。

方法二:

利用mysql 字符串函数 find_in_set();

代码如下:


SELECT * FROM users WHERE find_in_set('aa@email.com', emails);

  

 

这样是可以的,怎么理解呢?

mysql有很多字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。

e.g.

 

代码如下:


mysql > SELECT find_in_set()('b','a,a,b,c,d') as test;
-> 3

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn