0

文字列値 '61,80,112,256' を含む MySQL テーブル列 rubrics があります。だから私はそのクエリを実行しようとします:

select * from table where 256 in (rubrics) and 61 in (rubrics)

そして、結果は返されません。助言がありますか?

4

4 に答える 4

4

rubrics列はコンマ区切りのリストであるため、演算子INは機能しません。

MySQLには文字列リストで値を見つけることができる関数があるので、次を使用できるはずですFIND_IN_SET()

select *
from yourtable
where find_in_set(61, rubrics)
  or find_in_set(256, rubrics)

SQL FiddlewithDemoを参照してください

于 2013-02-11T11:05:40.647 に答える
1

のようなものWHERE rubrics LIKE '%,256,%' OR rubrics LIKE '256,%' OR rubrics LIKE '%,256'。括弧を使用して61でフィルタリングすることもできますが、結果のクエリは乱雑になります。キーを使用してサブクエリと結合を使用できるように、データを正規化することをお勧めします (本当のことです)。

FIND_IN_SET(より良いアプローチであるため、ブルーフィートの答えも参照してください)

于 2013-02-11T11:04:07.200 に答える
0

IN演算子は文字列では機能しません

LIKEまたはのような正しい部分文字列一致演算子を使用しますLOCATE

1つのアドバイス-rubics列を,文字で開始および終了するように更新します。これにより、622と262およびその他の組み合わせにも一致するのとはLOCATE(",62,", rubics)対照的に、操作が明確になります。あなたのrubicsがで始まっていないので価値がある場合、検索は失敗LOCATE("62", rubics)します,62,62,blah,foo,bar,

于 2013-02-11T11:08:26.270 に答える
0

これを試して

select * from table where rubrics like '%'+'256,'+'%' and rubrics like '%'+'61,'+'%'
于 2013-02-11T11:03:39.407 に答える