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必須以","分割開。