首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL查询查找逗号分隔字符串中的值

MySQL查询查找逗号分隔字符串中的值
EN

Stack Overflow用户
提问于 2011-02-18 02:35:01
回答 10查看 164.9K关注 0票数 99

我的表SHIRTS中有一个字段COLORS (varchar(50)),其中包含一个逗号分隔的字符串,比如1,2,5,12,15,。每个数字表示可用颜色。

在运行查询select * from shirts where colors like '%1%'以获取所有红色衬衫(color=1)时,我还获得了颜色为灰色(=12)和橙色(=15)的衬衫。

我应该如何重写查询,以便只选择颜色1,而不是所有包含数字1的颜色?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-02-18 02:39:20

经典的方法是在左边和右边加逗号:

代码语言:javascript
复制
select * from shirts where CONCAT(',', colors, ',') like '%,1,%'

但是find_in_set也可以工作:

代码语言:javascript
复制
select * from shirts where find_in_set('1',colors) <> 0
票数 204
EN

Stack Overflow用户

发布于 2011-02-18 02:40:22

在这种情况下,FIND_IN_SET是你的朋友

代码语言:javascript
复制
select * from shirts where FIND_IN_SET(1,colors) 
票数 35
EN

Stack Overflow用户

发布于 2011-02-18 02:38:17

看一下MySQL的FIND_IN_SET函数。

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

https://stackoverflow.com/questions/5033047

复制
相关文章

相似问题

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