首页 热点资讯 义务教育 高等教育 出国留学 考研考公

MySQL的FIND_IN_SET函数使用方法分享

发布网友 发布时间:2022-04-23 02:55

我来回答

2个回答

懂视网 时间:2022-05-01 00:18

2 select find_in_set(‘2‘, ‘1,2,3,4,5,6‘);
-- 0 select find_in_set(‘7‘, ‘1,2,3,4,5,6‘);
-- 0 select find_in_set(‘2‘, ‘1,21,3,4,5,6‘);
-- 0 select find_in_set(‘2‘, ‘‘);
-- 0 select find_in_set(‘2‘, ‘1,2 ,3,4,5,6‘);
-- NULL select find_in_set(NULL, ‘1,2,3,4,5,6‘);
-- NULL select find_in_set(1, NULL);
-- 0 select find_in_set(‘2,3‘, ‘1,2,3,4,5,6‘);

 

> 可替换分隔字符串的部分使用功能

有时候,我们获取了“2,3,4”字符串,我们想把它根据“,”分隔成5行,每行分别是2、3、4。

这时候,我们自然想到类似Java的String的split的函数,可是MySQL貌似并无类似的函数。(我没有找到,如果有的话请通知我哦)

 

而实际上,“2,3,4”是有一定业务意义的,或者说出自某一张表的,那么可以使用find_in_set把“2,3,4”从对应的表中查找出来。一般来说,该键有索引,从大量的数据找出少量的数据,效率是很高的。

下面是简单的例子:

技术分享
select t.id from 
(
select 1 as id, ‘nick‘ as name
union all
select 2 as id, ‘viki‘ as name
union all
select 3 as id, ‘robin‘ as name
union all
select 4 as id, ‘teng‘ as name
union all
select 5 as id, ‘mike‘ as name
union all
select 6 as id, ‘will‘ as name
) t
where find_in_set(t.id, ‘2,3,4‘) > 0;
View Code

 

【MySQL】MySQL的find_in_set的使用例子

标签:

热心网友 时间:2022-04-30 21:26

很多时候我们在设计数据库时有这种情况,比如:
有个文章表里面有个type字段,他存储的是文章类型,有
1头条,2推荐,3热点,4图文
.....11,12,13等等
现在有篇文章他既是
头条,又是热点,还是图文,
type中以
1,3,4的格式存储.
那们我们如何用sql查找所有type中有4图文标准的文章呢,
这就要我们的find_in_set出马的时候到了.
先看mysql手册中find_in_set函数的语法:
FIND_IN_SET(str,strlist)
假如字符串str
在由N
子链组成的字符串列表strlist
中,则返回值的范围在
1

N
之间。一个字符串列表就是一个由一些被‘,'符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type
SET列,则
FIND_IN_SET()
函数被优化,使用比特计算。如果str不在strlist
或strlist
为空字符串,则返回值为
0
。如任意一个参数为NULL,则返回值为
NULL。这个函数在第一个参数包含一个逗号(‘,')时将无法正常运行。
复制代码
代码如下:
mysql>
SELECT
FIND_IN_SET('b','a,b,c,d');
->
2
用起来很简单
就以上面我说到的情况来举例:
以下为引用的内容:
复制代码
代码如下:
select
*
from
article
where
FIND_IN_SET('4',type)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com