MySQL函数find_in_set介绍

数据库中的某个字段我十以字符存储的,同时又以","隔开的。如果想要查询这个字段中包含某个字符串该怎么查询?使用like?感觉不妥,如果使用like匹配可能会出问题比如“15”、“152”你要查询15只要包含15的都查询出来了,这不是我想要的。如果使用in()查询,不行不能够查询出需要匹配的值。百度了一下发现了find_in_set的方法。惊喜若狂,正是我需要的查询方法有增加了一个技能。

场景介绍

人有时会身兼数职,需要查找出其中担任某一职务的都有哪些人,如下面position字段,不同的职务用数字表示,多个职务以逗号隔开。

先要查找出担任1职务的人员,通过以下两种方式来查询。

方式一

采用模糊查询,匹配出1职务的记录,如下SQL:

select * from user where position like '%1%'

查询结果如下,仔细观察你会发现position为10的也被查出来了,但这个不符合业务要求。

方式二

采用in的记录,如下SQL【in查询相当于多个or条件的叠加】:

select * from user where position in (1)

方式三

采用的MySQL的的原生函数FIND_IN_SET(STR,数组)来查询,SQL如下:

select * from user where find_in_set(1,position)

查询结果如下,符合要求。

函数介绍

FIND_IN_SET(STR,strlist),注意其中strlist只识别英文逗号。

https://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_find-in-set

like是广泛的模糊匹配,字符串中没有分隔符

​ IN 后面是变量,且是模糊查询

​ Find_IN_SET 是精确匹配,字段值必须以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果

根据上面示例总结:

  1. FIND_IN_SET(arg1,arg2)中arg1代表我们要查找的字符串,arg2代表中我们要匹配的列名。

  2. FIND_IN_SET(arg1,arg2)中arg2中数据必须是要用 , 分割。

  3. FIND_IN_SET(arg1,arg2)中arg1是跟arg2中以,分割进行全匹配的。

注意在hibernate中如果要使用需要按如下写【后面要加">0"】,不然会报错

@Override
public VideoType findVideoTypeRealId(String id) {
List parameters = new ArrayList();
String where = " find_in_set(?,REALID)>0";
parameters.add(id);
String sql = "";
return (VideoType)super.getObjectUnique(VideoType.class, null, where, parameters.toArray());
}

原文链接:https://blog.csdn.net/xueshao110/article/details/80606960

=====================================================================

博客地址:https://www.codepeople.cn

=====================================================================

微信公众号:

MySQL函数find_in_set介绍的更多相关文章

  1. Mysql函数FIND_IN_SET()的使用方法

    有了FIND_IN_SET这个函数.我们可以设计一个如:一只手机即是智能机,又是Andriod系统的. 比如:有个产品表里有一个type字段,他存储的是产品(手机)类型,有 1.智能机,2.Andri ...

  2. coding++ :MySQL函数——FIND_IN_SET()

    语法:FIND_IN_SET(str,strlist) 定义: 1). 假如字符串 str 在由N子链组成的字符串列表 strlist 中,则返回值的范围在1到N之间. 2). 一个字符串列表就是一个 ...

  3. mysql函数find_in_set()

    SELECT FIND_IN_SET('b','a,b,c,d'); 结果:2 SELECT * from video where find_in_set(id,'1,2,3,4'); 查找id在‘1 ...

  4. mysql中find_in_set()函数的使用

    首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我 ...

  5. MySQL的FIND_IN_SET()函数

    今天在做项目时,看到了一个从没见过的MySQL函数——FIND_IN_SET(),顿时就产生了浓郁的兴趣,然后就搜了搜,翻了翻. 语法:FIND_IN_SET(str,strlist) 定义: 1. ...

  6. mysql中FIND_IN_SET函数用法

    本篇文章主要介绍mysql中FIND_IN_SET函数用法,用来精确查询字段中以逗号分隔的数据 以及其与 like 和 in 的区别 1.问题发现 之前在做工作任务时有这么一个需求:需要用接口所传的服 ...

  7. MySQL 的 find_in_set 函数使用方法

    举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文...1,12,13 等等 . 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1, ...

  8. mysql 的 find_in_set函数使用方法

    举个例子来说: 有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 .....11,12,13等等 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1 ...

  9. 一天一个mysql函数(二) FIND_IN_SET()

    in和FILD_IN_SET() 的区别: select id, list, name from table where FIND_IN_SET( 'daodao' , list) 所以如果list是 ...

随机推荐

  1. consul:connect

    官方文档:https://www.consul.io/docs/connect/index.html#getting-started-with-connect consul connect的功能类似与 ...

  2. linux设备驱动程序--bus

    linux 中bus驱动解析 总线(bus)是linux发展过程中抽象出来的一种设备模型,为了统一管理所有的设备,内核中每个设备都会被挂载在总线上,这个bus可以是对应硬件的bus(i2c bus.s ...

  3. Httpd服务入门知识-Httpd服务常见配置案例之日志设定

    Httpd服务入门知识-Httpd服务常见配置案例之日志设定 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志类型 [root@node101.yinzhengjie.org ...

  4. Mac Docker安装Redis4.0

    mkdir redis 在~目录下创建redis目录 docker run -d -p 6379:6379 -v $PWD/redis:/data -d --name redis4.0 redis:4 ...

  5. hexo的jacman主题设置语言为英文后偶尔出现中文

    发现这个问题也好久了.问题的具体表现是在根目录下的_config.yml设置了语言为英文,但是每次发布后都会更换一次语言.今天看了文件结构,知道了,每换一次语言“英文.简体中文.繁体中文”,就是这三种 ...

  6. python应用-猜数字

    """ 猜数字游戏(电脑给数字人猜) Author:罗万财 Date:2017-6-3 """ from random import ran ...

  7. 《DSL》笔记一、什么是DSL(转)

    1.1.问题域与解答域 1.1.1.什么是DSL? DSL(Domain-Specific Language)全称领域专用语言,就是专门用户特定领域的语言,看着概念觉得挺高大上的,其实很简单,就是专门 ...

  8. jmeter+ant+jenkins搭建接口自动化测试环境(基于win)

    1.jmeter jmeter依赖java运行环境,所以需要提前下载jdk并配置好环境变量 官网下载(http://jmeter.apache.org/download_jmeter.cgi),我用的 ...

  9. (11)树莓派3 有线网卡静态IP设置

    https://www.cnblogs.com/10e-6/p/5778355.html 树莓派设置静态IP地址 首先终端输入: ifconfig 查看树莓派默认分配的动态IP地址. 图 1-4 配置 ...

  10. 苹果MAC OS查看MAC地址及修改ip

    一,查看mac地址 第一步: 第二步: 第三步: 二,更改IP 第一步: 第二步: 第三步: 最后点击“好”就完成了 我要这天再遮不住我眼,要这地再埋不了我心.要这天下众生都明白我意,要那诸佛都烟消云 ...