1. ホーム
  2. sql

[解決済み] MySQLクエリでカンマ区切り文字列の値を検索する

2022-12-11 12:57:47

質問

私は、フィールド COLORS (varchar(50)) というフィールドがあります。 SHIRTS のようなカンマで区切られた文字列を含む 1,2,5,12,15, . 各数値は使用可能な色を表します。

クエリを実行するとき select * from shirts where colors like '%1%' を実行して赤いシャツ (color=1) をすべて取得すると、色が灰色 (=12) とオレンジ (=15) のシャツも取得されます。

数字の1を含むすべての色ではなく、色1だけを選択するように、クエリをどのように書き直せばよいですか?

どのように解決するのですか?

古典的な方法は、左右にカンマを追加することです。

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

しかし find_in_set も動作します。

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