首页  >  问答  >  正文

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

<p>我在我的表<code>SHIRTS</code>中有一个字段<code>COLORS (varchar(50))</code>,它包含一个逗号分隔的字符串,例如<code>1,2,5,12,15,</code>。每个数字代表可用的颜色。</p> <p>当运行查询<code>select * from shirts where colors like '%1%'</code>来获取所有红色的衬衫(颜色=1)时,我还会得到颜色为灰色(=12)和橙色(=15)的衬衫。</p> <p>我应该如何重写查询,以便只选择颜色为1而不是包含数字1的所有颜色?</p>
P粉763748806P粉763748806451 天前437

全部回复(2)我来回复

  • P粉036800074

    P粉0368000742023-08-18 10:38:23

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

    select * from shirts where FIND_IN_SET(1,colors)

    回复
    0
  • P粉254077747

    P粉2540777472023-08-18 00:12:51

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

    select * from shirts where CONCAT(',', colors, ',') like '%,1,%'

    但是find_in_set也可以使用:

    select * from shirts where find_in_set('1',colors) <> 0

    回复
    0
  • 取消回复