首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:检查条目在逗号分隔字段中是否有值的最有效方法?

问MySQL:检查条目在逗号分隔字段中是否有值的最有效方法?
EN

Stack Overflow用户
提问于 2015-03-20 10:57:52
回答 1查看 137关注 0票数 0

我有一个MySQL表用户,需要检查其中的哪些条目在它们的类字段中包含给定的值,这是我目前作为逗号分隔的所有类的列表。

我最好的想法是让用户,将他们的类字段分割成一个数组,然后循环检查是否有匹配,但特别是当用户列表越来越大,效率会非常低的时候。

所以我想知道是否有更好的方法在包含逗号分隔值的列表中找到匹配,或者是否有更好的方法来存储这些类(类的数量不是固定的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-20 11:00:43

如果使用的是MySQL,则可以使用FIND_IN_SET()函数。

FIND_IN_SET(str,strlist) 如果字符串str位于由N个子字符串组成的字符串列表strlist中,则返回范围为1到N的值。字符串列表是由由“,”字符分隔的子字符串组成的字符串。如果第一个参数是一个常量字符串,第二个参数是一个类型为SET的列,则对FIND_IN_SET()函数进行优化以使用位算术。如果str不在strlist中或strlist是空字符串,则返回0。如果任何参数都为空,则返回NULL。如果第一个参数包含逗号(“,”)字符,则此函数不能正常工作。

这样您就可以执行如下的查询

代码语言:javascript
复制
SELECT * FROM users WHERE FIND_IN_SET('class to search', class_list);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29164916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档