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

假设有个表:

代码如下:

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

(0)

相关推荐

  • sql 判断字符串中是否包含数字和字母的方法

    判断是否含有字母 select PATINDEX('%[A-Za-z]%', 'ads23432')=0 (如果存在字母,结果>1) 判断是否含有数字 PATINDEX('%[0-9]%', '234sdf')=0 (如果存在数字,结果>1)

  • sql server字符串非空判断实现方法

    复制代码 代码如下: CREATE function getcolor (@井号 varchar(50),@层位 varchar(50)) returns varchar(200) as begin declare @sql varchar(2000);set @sql='' --distinct select @sql=@sql+ 颜色+',' from ( select distinct 颜色 from yourtablename where 井号=@井号 and 层位=@层位 and 颜色

  • SQL中字符串中包含字符的判断方法

    在sql中我判断包含字符串我们可使用很多方法,如like,replace,charindex函数都可实现我们要的功能,下面我来给各位介绍判断字符串包含字符串sql语句. 通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使用 函数:CHARINDEX和PATINDEX CHARINDEX:查某字符(串)是否包含在其他字符串中,返回字符串中指定表达式的起始位置. PATINDEX:查某字符(串)是否包含在其他字符串中,返回指定表达式中某模式第一次出现的起始位置:如果在全部有效的文本和

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

    假设有个表: 复制代码 代码如下: 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@emai

  • Java中高效判断数组中是否包含某个元素的几种方法

    目录 检查数组是否包含某个值的方法 使用List 使用Set 使用循环判断 使用Arrays.binarySearch() 时间复杂度 使用一个长度为1k的数组 使用一个长度为10k的数组 总结 补充 使用ArrayUtils 完整测试代码 长字符串数据 如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同

  • jQuery 判断是否包含在数组中Array[]的方法

    jQuery 判断是否包含在数组中Array[]的方法 var Menustr="1,2,3,4,5,6,7,8,9,10,11,12,"; var Menarrstr=Menustr.split(","); if ($.inArray($(this).attr("id"), Menarrstr)) { //... } 以上这篇jQuery 判断是否包含在数组中Array[]的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多

  • 详解mysql插入数据后返回自增ID的七种方法

    引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 id 的值呢? 一:使用 last_insert_id() SELECT LAST_INSERT_ID(); 1. 每次 mysql 的 query 操作在 mysql 服务器上可以理解为一次"原子"操作, 写操作常常需要锁表, 这里的锁表是 mysql 应用服务器锁表不是我们的应用程序锁表

  • Mysql分库分表之后主键处理的几种方法

    目录 数据库自增 ID 设置数据库 sequence 或者表自增字段步长 UUID 系统当前时间戳+XXX Snowflake 算法 数据库自增 ID 搞一个数据库,什么也不干,就用于生成主键. 你的系统里每次得到一个 id,都需要往那个专门生成主键的数据库中通过插入获取一个自增的ID,拿到这个 id 之后再往对应的分库分表里去写入. 优点:方便简单. 缺点:单库生成自增 id,要是高并发的话,就会有瓶颈的:如果你硬是要改进一下,那么就专门开一个服务出来,这个服务每次就拿到当前 id 最大值,然

  • Android判断后台服务是否开启的两种方法实例详解

    Android判断后台服务是否开启的两种方法实例详解 最近项目用到后台上传,就开启了一个服务service. 但是刚开始用这种方法,有些机型不支持:酷派不支持.然后又换了第二种判断方法. // public boolean isServiceWork(Context mContext, String serviceName) { // boolean isWork = false; // ActivityManager myAM = (ActivityManager) mContext // .

  • mysql 从 frm 文件恢复 table 表结构的3种方法【推荐】

    mysql 正常运行的时候,查看 table 的结构并不是困难的事. 但是有时 mysql 发生故障,这种方法便不再可行. 当遇到故障,通常使用新的 mysql 实例来恢复当前的数据. 建表是非常重要的步骤,我们必须有其它的方法来寻找 table 的结构. table 结构定义在哪里 通常关注的用户数据,底层都实际存储在 mysql 数据目录.  其它的元数据也不例外,比如 table 表结构的定义. mysql 数据目录文件结构是非常清晰的, •目录对应数据库 •frm 文件存储了 table

  • 用JavaScript判断CSS浏览器类型前缀的两种方法

    不管我们对浏览器类型前缀有多么的讨厌,我们都不得不每天面对它,否者有些东西不能正常工作.这些前缀的用法有两种:在CSS里(例如"-moz-")和在JS里.有一个神奇的 X-Tag 项目里有一段很聪明的JavaScript脚本,可以用来判断当前使用的是什么前缀--让我来展示它是如何工作的! 比如 CSS 前缀,IE 的是 "-ms-",旧版 Opera 的是 "-o-",Firefox 的是 "-moz-",Safari/Chr

  • js判断字符是否是汉字的两种方法小结

    有时需要判断一个字符是不是汉字,比如在用户输入含有中英文的内容时,需要判断是否超过规定长度就要用到.用 Javascript 判断通常有两种方法. 1.用正则表达式判断 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xml

  • 使用JS在浏览器中判断当前网络连接状态的几种方法

    使用JS在浏览器中判断当前网络状态的几种方法如下: 1. navigator.onLine 2. ajax请求 3. 获取网络资源 4. bind() 1. navigator.onLine 通过navigator.onLine判断当前网络状态: if(navigator.onLine){ ... }else{ ... } 非常简单,但是并不准确-根据MDN的描述: navigator.onLine只会在机器未连接到局域网或路由器时返回false,其他情况下均返回true. 也就是说,机器连接上

随机推荐