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

MySQL中的FIND_IN_SET函数

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

语法

FIND_IN_SET(str, strlist)

str:要查找的字符串。
strlist:逗号分隔的字符串列表。

示例

假设有如下的表users

id name hobbies
1 Alice swimming,reading
2 Bob coding,gaming
3 Charlie hiking,cooking

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

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

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

id name hobbies
2 Bob coding,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;

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

id name hobbies
2 Bob coding,gaming

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

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

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

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

id name hobbies
2 Bob coding,gaming
3 Charlie hiking,cooking

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

总结

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

你可能感兴趣的:(数据库,mysql)