搜尋

首頁  >  問答  >  主體

在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粉763748806499 天前479

全部回覆(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
  • 取消回覆