You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询数据库表中逗号分隔的allot字段含特定整数值的id?

嘿,这个场景我碰到过好多次!要从逗号分隔的allot字段里精准找出包含特定整数值的记录,直接用LIKE很容易踩坑(比如会误匹配到226、261这类带26但不是独立值的情况),给你两个靠谱的解决办法:

方案1:用MySQL专属函数FIND_IN_SET()

这是处理逗号分隔列表最省心的方案,MySQL专门提供了这个函数来做这件事,能精准匹配独立的数值,不会出现部分匹配的问题。

示例SQL(把your_table_name换成你的实际表名):

SELECT id
FROM your_table_name
WHERE FIND_IN_SET('26', allot) > 0;

简单解释下:FIND_IN_SET()会返回目标值在逗号列表中的位置,只要返回结果大于0,就说明这个值存在于allot字段里,这样就能精准拿到你要的id=72这条数据啦。

方案2:通用SQL写法(适配多数数据库)

如果你的数据库不是MySQL(比如PostgreSQL、SQL Server这类),不支持FIND_IN_SET,可以用拼接前后逗号的方式来规避部分匹配的问题:

示例SQL:

SELECT id
FROM your_table_name
WHERE CONCAT(',', allot, ',') LIKE '%,26,%';

原理很简单:给allot字段的前后都加上逗号,这样不管目标值26在列表的开头、中间还是结尾,都会变成,26,的格式,再用LIKE匹配就不会误判啦。

额外提醒

说句题外话:尽量别在数据库里存逗号分隔的列表,这种设计不符合数据库的范式要求,后期查询、修改、扩展都会很麻烦。如果业务允许的话,建议把allot拆成单独的关联表,用多对多的关系来存储,这样查询效率和可维护性都会提升很多。

内容的提问来源于stack exchange,提问作者Manoj kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:42:23