首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysqlfind_in_set()函数使用

----------------- MySQL手册find_in_set函数语法: FIND_IN_SET(str,strlist) str 要查询字符串 strlist 字段名 参数以”,...”分隔 如 (1,2,6,8) 查询字段(strlist)包含(str)结果,返回结果为null记录 假如字符串str在由N个子链组成字符串列表strlist ,则返回值范围在 1 到 N...-------------------------------------------------------- find_in_set()和like区别: 在mysql,有时我们在做数据库查询时,...----------------- MySQL手册find_in_set函数语法: FIND_IN_SET(str,strlist) str 要查询字符串 strlist 字段名 参数以”,...”分隔 如 (1,2,6,8) 查询字段(strlist)包含(str)结果,返回结果为null记录 假如字符串str在由N个子链组成字符串列表strlist ,则返回值范围在 1 到 N

3.3K40
您找到你想要的搜索结果了吗?
是的
没有找到

不同数据库对以逗号分割字符串筛选操作处理方案总结

不同数据库对以逗号分割字符串筛选操作处理方案总结 一、需求描述 数据库存在某个字段存放以逗号分割字符串类型数据,如"x,y,z,a,b,c" 前端同样传入以逗号分割字符串作为筛选条件,如"x,...,如"字段1|字段2",但是都不能很好实现"不考虑具体顺序逻辑",在遇到多个字段时,无论时like模糊匹配或者是正则匹配都会造成漏选多选问题。...比较好一个方案是在数据库手动实现按逗号分割字符串自定义函数,然后再依次实现比较逻辑,但是在某些不支持扩展自定义函数第三方需求下,这个方案也无法实现。...MySQL数据库实现方案(FIND_IN_SET函数) 全包含:select * from table where FIND_IN_SET('x', 列名) > 0 and FIND_IN_SET...('y', 列名) > 0 不包含:select * from table where FIND_IN_SET('x', 列名) = 0 and FIND_IN_SET('y', 列名) = 0 PostgreSQL

1.5K20

mysql 多表关联查询 实现 全文匹配 模糊搜索接口 SQLmysql 多表关联查询 实现 全文匹配 模糊搜索接口 SQL

,有时我们在做数据库查询时,需要得到某字段包含某个值记录,但是它也不是用like能解决,使用like可能查到我们不想要记录,它比like更精准,这时候mysqlFIND_IN_SET函数就派上用场了...null记录 下面举例说明 test表中有如下字段及值 下面我想查询area包含”1″这个参数记录 SELECT * from test where FIND_IN_SET('1',area)...返回值 下面查询btype字段包含”15″这个参数值 SELECT * from test where FIND_IN_SET('15',btype) 返回值 下面查询btype字段包含”5″这个参数值...接下面查询btype字段包含”20″这个参数值 SELECT * from test where FIND_IN_SET('20',btype) 当然它返回值为null,因为字段没有这个值...FIND_IN_SET和like区别 like是广泛模糊匹配,字符串没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询结果要小于like查询结果

2.4K20

MySQL find_in_set函数深入解析与应用

在数据库操作,我们经常会遇到需要处理以逗号分隔字符串,并且需要根据这些字符串进行查询情况。MySQL提供了一个非常实用函数FIND_IN_SET()来处理这种特定查询需求。...FIND_IN_SET()是MySQL一个字符串函数,用于搜索一个字符串在另一个逗号分隔字符串列表位置。如果找到匹配,它返回一个大于0整数表示位置,否则返回0。...ELECT * FROM users WHERE FIND_IN_SET('reading', hobbies) > 0; 这条查询语句会返回所有hobbies字段包含reading记录。...注意事项 在使用FIND_IN_SET()函数时,需要注意以下几点: FIND_IN_SET()对大小写敏感。 FIND_IN_SET()函数不支持模糊匹配。...()是一个非常方便函数,可以帮助我们快速地查询出在逗号分隔字符串列表查找特定字符串需求。

36210

mysqlFIND_IN_SET使用方法

mysql,有时我们在做数据库查询时,需要得到某字段包含某个值记录,但是它也不是用like能解决,使用like可能查到我们不想要记录,它比like更精准,这时候mysqlFIND_IN_SET...null记录 下面举例说明 test表中有如下字段及值 下面我想查询area包含”1″这个参数记录 SELECT * from test where FIND_IN_SET('1',area) 返回值...下面查询btype字段包含”15″这个参数值 SELECT * from test where FIND_IN_SET('15',btype) 返回值 下面查询btype字段包含”5″这个参数值...接下面查询btype字段包含”20″这个参数值 SELECT * from test where FIND_IN_SET('20',btype) 当然它返回值为null,因为字段没有这个值 FIND_IN_SET...和like区别 like是广泛模糊匹配,字符串没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询结果要小于like查询结果。

17210

【黄啊码】thinkphp5查询字段是否包含某个值方法

最新解决方案: 对于一些实在复杂查询,比如find_in_set,也可以直接使用原生SQL语句进行查询,例如: Db::table('think_user') ->where('find_in_set...(:id,sids)',['id'=>$id]) ->select(); 其他解决方案: 在thinkphp5使用mysql find_in_set语法时,可以使用EXP(表达式查询)来实现,...具体代码如下: $data = Db::table('students')->where('exp','FIND_IN_SET(1,sids)')->select(); 如果用数组条件查询形式的话,那么像下面这么写查询条件即可...: $where[]=['exp','FIND_IN_SET(2,sids)']; 当然也有朋友说建议用like,like是广泛模糊匹配,字符串没有分隔符,Find_IN_SET 是精确匹配,字段值以英文...","分隔,Find_IN_SET查询结果要小于like查询结果。

1.5K20

MySQLFIND_IN_SET探险记

1、业务背景 公司业务需求是需要分权限分等级获取不同内容,因为原来角色,权限,分组表已经建好,但是又要实现不同产品需要不同等级不同分组的人员管理,在做数据库查询时,需要得到某字段包含某个值记录...,但是它也不是用like能解决,使用like可能查到我们不想要记录,它比like更精准,查找资料后发现涉及到数据库特有函数,候mysqlFIND_IN_SET函数就派上用场了,下面来具体了解一下...其实where 类似于 if 就是对条件判断,返回 true or false。在检索过程,将满足条件,即条件为true结果返回。...贴图: SELECT FIND_IN_SET(1,1) ? 刚说好字符串,你就给我来个这 ? ? ? ,mysql你怎么可以这么随意呢! ? ? ? 以上图示,有劳读友自行总结 ? ? ?...5、FIND_IN_SET和like区别 like是广泛模糊匹配,字符串没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询结果要小于like查询结果

1.9K10

使用tp框架和SQL语句查询数据表某字段包含某值

有时我们需要查询某个字段是否包含某值时,通常用like进行模糊查询,但对于一些要求比较准确查询时(例如:微信公众号关键字回复匹配查询)就需要用到MySQL find_in_set()函数; 以下是用...find_in_set()函数写sq查询l语句示例: $keyword = '你好'; $sql = "select * from table_name where find_in_set('"....$keyword"',msg_keyword) and msg_active = 1"; 以下是在tp框架中使用find_in_set()函数查询示例: $keyword = '你好'; $where...数据库关键字要以英文“,”分隔; 2.存储数据要对分隔符进行处理,保证以英文“,”分隔关键字。...以上这篇使用tp框架和SQL语句查询数据表某字段包含某值就是小编分享给大家全部内容了,希望能给大家一个参考。

7.3K31

MYSQL用法(十五) MySQLFIND_IN_SET()用法

FIND_IN_SET(str,strlist) 返回str在字符串集strlist序号(任何参数是NULL则返回NULL,如果str没找到返回0,参数1包含","时工作异常) 例子: 查询表字段...:alnum:]]+{id},' 使用上面的语句,可以查询出来 用FIND_IN_SET() 更简单 SELECT * FROM linkinfo WHERE FIND_IN_SET('1',pingid...原来以为mysql可以进行这样查询----->(一) select id, list, name from table where 'daodao' IN (list); 注:1. table含有三个字段...id:int, list:varchar(255), name:varchar(255) 实际上这样是不行,这样只有当name是list第一个元素时,查询才有效,否则都不到结果,即使'daodao...原因其实是(一) (list)    list是变量, 而(二) ('libk', 'zyfon', 'daodao')是常量 所以如果要让(一)能正确工作,需要用find_in_set()---

2.8K30

mysql 类型自动化转换问题

from campaign_plan where find_in_set('4',ad_type); 参考:https://www.cnblogs.com/mytzq/p/7090197.html 无意间发现了一个这样问题...解惑 询问了一个朋友,他给了一个方向,mysql会自动转换类型,当你select语句条件和数据type不一致时候; 一拍大腿,是呀,之前有碰到过类似问题,如下: 有个id是varchar,你不加...‘’也可以查询出来, 应该是转换了,但这样没走索引,所以查询效率很低 。。...当时碰到问题是,当数据是id='123', 你select是where id = 123,一个是int 一个是varchar,mysql会自动'123'转为123跟你对比 回到,我上面碰到问题也是类似...不需要转换 如果比较操作两个参数都是字符串,则将它们作为字符串进行比较。 如果两个参数都是整数,则将它们作为整数进行比较。

2K20

MySQL 8.0.23上遇到一个FIND_IN_SETBUG

1、背景 在MySQL 8.0.23出现执行SQL超时报错,而在MySQL8.0.18版本上未出现,故做个记录,以飨读者。...2、故障提要 在客户MySQL版本8.0.23,在部署客户测试环境时出现SQL执行超时报错。通过慢日志查询,找到对应SQL。...SQL如下: SELECT * FROM t_dict WHERE FIND_IN_SET(id,(SELECT getDictChildrenNew( (select id from...root_code = 'metadata_classify' ) ) 或者我单独将这个查询值以字符串形式作为FIND_IN_SET第二个参数传入执行也很快。...而这一次客户现场测试环境MySQL版本是客户定,我们产品没在这个版本跑过,所以才给出这个建议。后续我会在新版做一轮测试看看。 此外,我们也会尝试去MySQL官网报告bug(#105277)。

67510

MySQL实现树形递归查询

最近在做项目迁移,Oracle版本迁到MySQL版本,遇到有些Oracle函数,MySQL并没有,所以就只好想自定义函数或者找到替换函数方法进行改造。...Oracle递归查询 oracle实现递归查询的话,就可以使用start with ... connect by connect by递归查询基本语法是: select 1 from 表格 start...递归查询  下面主要介绍Mysql方面的实现,Mysql并没有提供类似函数,所以只能通过自定义函数实现,网上很多这种资料,不过已经不知道那篇是原创了,这篇博客写不错,https://www.2cto.com.../database/201209/152513.html, 下面我也是用作者提供方法实现自己,先感谢作者分享 这里借用作者提供自定义函数,再加上Find_in_set函数 find_in_set...">                 and u.unit_name like concat('%', #{unitName} ,'%')                     </where

1.6K00

MySQL数据库数据类型

-----+ | 1 | | 127 | +------+ 2 rows in set (0.00 sec) 说明: 在MySQL,整型可以指定是有符号和无符号,默认是有符号。...如果我们有这样值,只存放01,这时可以定义bit(1),这样可以节省空间: mysql> create table tt4( -> gender bit(1) -> ); Query...可以存放两个字符,但是不能超过2个,.CHAR最多只能是char(255),不管是汉族还是字母还是什么,因为在MySQL,一个字符就是一个字符,一个单词,一个汉字意思。...集合查询使用find_ in_ set函数: find_in_set(sub,str_list) :如果 sub 在 str_list ,则返回下标;如果不在,返回0;str_list 用逗号分隔字符串...> select * from votes where find_in_set('跑步',hobby); +----------+---------------+--------+ | username

18740

Mysql实现树形递归查询

最近在做项目迁移,Oracle版本迁到Mysql版本,遇到有些oracle函数,mysql并没有,所以就只好想自定义函数或者找到替换函数方法进行改造。...Oracle递归查询 oracle实现递归查询的话,就可以使用start with … connect by connect by递归查询基本语法是: select 1 from 表格 start with...递归查询 下面主要介绍Mysql方面的实现,Mysql并没有提供类似函数,所以只能通过自定义函数实现,网上很多这种资料,不过已经不知道那篇是原创了,这篇博客写不错,https://www.2cto.com.../database/201209/152513.html, 下面我也是用作者提供方法实现自己,先感谢作者分享 这里借用作者提供自定义函数,再加上Find_in_set函数 find_in_set...=''"> and u.unit_name like concat('%', #{unitName} ,'%') getUnitChildList

5.5K30

mysql中将where条件过滤掉group by分组后查询无数据行进行补0

背景 mysql经常会用到group By来进行分组查询,但也经常会遇到一个问题,就是当有where条件时,被where条件过滤数据不显示了。...例如我有一组数据: 我想查询创建时间大于某一范围spu分组下sku数量 正常sql查出的话,假如不存在相关记录 SELECT product_id , count( *) count FROM...product_sku WHERE create_time >= #{param} AND product_id in (1,2,3,4,5) GROUP BY product_id 结果查不到任何记录...即使没有数据,也想让count显示出0而不是空效果 因此,我们想实现,即使没有数据,也想让count显示出0而不是空效果; 解决方案:构建一个包含所有productId结果集;然后和我们本来sql...b.count, 0) usedCount FROM product_sku a LEFT JOIN ( SELECT product_id , count( *) count FROM product_sku WHERE

12810

Mysql系列之实现树形递归查询

最近在做项目迁移,Oracle版本迁到Mysql版本,遇到有些oracle函数,mysql并没有,所以就只好想自定义函数或者找到替换函数方法进行改造。...Oracle递归查询 oracle实现递归查询的话,就可以使用start with … connect by connect by递归查询基本语法是: select 1 from 表格 start with...递归查询 下面主要介绍Mysql方面的实现,Mysql并没有提供类似函数,所以只能通过自定义函数实现,网上很多这种资料,不过已经不知道那篇是原创了,这篇博客写不错,https://www.2cto.com.../database/201209/152513.html, 下面我也是用作者提供方法实现自己,先感谢作者分享 这里借用作者提供自定义函数,再加上Find_in_set函数 find_in_set...=''"> and u.unit_name like concat('%', #{unitName} ,'%') getUnitChildList

74730
领券