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

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

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

假设有个表:

 

代码如下:


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

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn