表中有个字段是以逗号间隔存储的
mineral
id | mineral |
1 | 1,4,32 |
2 | 1,2 |
要根据mineral查询这个表的数据
怎么查询呢
select * from xxx where find_in_set(2,mineral);
查询结果是 :
id | mineral |
2 | 1,2 |
那么 find_in_set是一个什么函数呢?
MySQL提供了一个名为find_in_set()的内置函数,运行在逗号间隔的字符串列表中查找指定字符串的位置。
find_in_set(needle,haystack);
find_in_set()函数接受两个参数:
第一个参数needle是要查找的字符串。
第二个参数haystack是要搜索的逗号间隔字符串列表。
find_in_set(0函数根据参数的值返回一个整数或一个NULL值:
如果needle或haystack为null,则函数返回null值。
如果needle不在haystack中,或者haystack是空字符串,则返回零。
如果needle在haystack中,则返回一个needle在haystack中的位置。
请注意,如果needle包含逗号(,),该函数将无法正常工作。此外,如果needle是一个常量字符串,而且naystack是一个类型为set的列,mySQL将使用位算算术优化。