数据库中储存的数据格式为:1,2,3、11,12,13,如何准确查出包含2的数据,而不筛选出12?

您所在的位置:网站首页 locate函数数据库 数据库中储存的数据格式为:1,2,3、11,12,13,如何准确查出包含2的数据,而不筛选出12?

数据库中储存的数据格式为:1,2,3、11,12,13,如何准确查出包含2的数据,而不筛选出12?

2023-07-06 08:19| 来源: 网络整理| 查看: 265

MySQL中的FIND_IN_SET函数

MySQL中的FIND_IN_SET函数是一种用于搜索指定值在一个逗号分隔列表中的位置的函数。该函数返回指定值在列表中的索引(从1开始计数),如果找不到则返回0。本文将介绍FIND_IN_SET函数的语法、用法以及示例。

语法 FIND_IN_SET(str, strlist)str:要查找的字符串。 strlist:逗号分隔的字符串列表。 示例

假设有如下的表users:

idnamehobbies1Aliceswimming,reading2Bobcoding,gaming3Charliehiking,cooking

我们想要查找具有特定爱好的用户。例如,我们想要找到所有喜欢编码的用户。可以使用FIND_IN_SET函数来实现此目的。以下是一个示例查询:

SELECT * FROM users WHERE FIND_IN_SET('coding', hobbies) > 0;

执行以上查询,将返回以下结果:

idnamehobbies2Bobcoding,gaming

在上面的查询中,FIND_IN_SET('coding', hobbies)将返回2,因为编码在用户Bob的爱好列表中的第一个位置。

另外,如果我们想要查找喜欢编码和游戏的用户,可以使用多个FIND_IN_SET函数来实现。以下是一个示例查询:

SELECT * FROM users WHERE FIND_IN_SET('coding', hobbies) > 0 AND FIND_IN_SET('gaming', hobbies) > 0;

执行以上查询,将返回以下结果:

idnamehobbies2Bobcoding,gaming

在上面的查询中,两个FIND_IN_SET函数分别检查hobbies列中是否包含'coding'和'gaming',并且两者都返回了大于0的索引值。

此外,如果要排除某些爱好的用户,可以结合NOT和FIND_IN_SET函数使用。以下是一个示例查询:

SELECT * FROM users WHERE NOT FIND_IN_SET('swimming', hobbies) > 0;

执行以上查询,将返回以下结果:

idnamehobbies2Bobcoding,gaming3Charliehiking,cooking

在上面的查询中,使用了NOT FIND_IN_SET('swimming', hobbies) > 0来排除具有"swimming"爱好的用户。

总结

FIND_IN_SET函数是MySQL中用于搜索逗号分隔列表的非常有用的函数。通过使用FIND_IN_SET函数,我们可以轻松地搜索具有特定值的记录,并根据需要进行过滤和排除。希望本文对您理解和使用FIND_IN_SET函数时有所帮助!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3