灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3964回复:0

[mysql]Mysql查找如何判断字段是否包含某个字符串

楼主#
更多 发布于:2013-07-08 13:21
Mysql查找如何判断字段是否包含某个字符串
 
有这样一个需求,在Mysql数据库字符串字段(权限)中,用户有多个不同的邮箱,分别被‘,’分开,现在要取出某个邮箱的所有成员列表。
 
假设有个表:
 

[code ]CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),user_name VARCHAR(20) NOT NULL,emails VARCHAR(50) NOT NULL);[/code]
 
初始化表,并添加些记录。
 

[code ]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');[/code]
 
Mysql 中有些字段是字符串类型的,如何查找其中包含某些字符的记录呢?
 
方法一
 
很简单可以用%来实现
 
比如
 

[code ]SELECT * FROM users WHERE emails like "%b@email.com%";[/code]
 
但是这样子的话就会把bb@email.com也查出来了就不符合需求了
 
方法二
 
利用mysql 字符串函数 find_in_set();
 

[code ]SELECT * FROM users WHERE find_in_set('aa@email.com', emails);[/code]
 
这样子就可以找到email字段里包含有aa@emial.com的所有用户了
 
这样就能达到我们预期的效果,问题就解决了!
 
要注意的是:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。

喜欢0 评分0
游客

返回顶部