PHP技术论坛

搜索
查看: 1275|回复: 0
打印 上一主题 下一主题

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

[复制链接]

83

主题

88

帖子

411

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
411
跳转到指定楼层
楼主
发表于 2016-1-15 14:27:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假设有个表:

[url=]复制代码[/url]代码如下:

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


初始化表,并添加些记录。 
[url=]复制代码[/url]代码如下:

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 中有些字段是字符串类型的,如何查找其中包含某些字符的记录呢?
方法一:
[url=]复制代码[/url]代码如下:

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


这样bb@email.com的用户也查出来了,不符合预期。
方法二:
利用mysql 字符串函数 find_in_set();
[url=]复制代码[/url]代码如下:

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

  
这样是可以的,怎么理解呢?
mysql有很多字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。
e.g.

[url=]复制代码[/url]代码如下:

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|PHP  

GMT+8, 2024-4-29 18:18 , Processed in 0.065384 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表