Mysql查找如何判断字段是否包含某个字符串
有这样一个需求,在Mysql
数据库字符串字段(权限)中,用户有多个不同的邮箱,分别被‘,’分开,现在要取出某个邮箱的所有成员列表。
假设有个表:
1
|
CREATE
TABLE
users(id
int
(6)
NOT
NULL
AUTO_INCREMENT,
PRIMARY
KEY
(id),user_name
VARCHAR
(20)
NOT
NULL
,emails
VARCHAR
(50)
NOT
NULL
);
|
初始化表,并添加些记录。
1
2
3
|
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 中有些字段是字符串类型的,如何查找其中包含某些字符的记录呢?
方法一
很简单可以用%来实现
比如
1
|
SELECT
*
FROM
users
WHERE
emails
like
"%b@email.com%"
;
|
但是这样子的话就会把bb@email.com也查出来了就不符合需求了
方法二
利用
mysql 字符串函数 find_in_set();
1
|
SELECT
*
FROM
users
WHERE
find_in_set(
'aa@email.com'
, emails);
|
这样子就可以找到email字段里包含有aa@emial.com的所有用户了
这样就能达到我们预期的效果,问题就解决了!
要注意的是:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。