1

私は次のような値(色)の文字列を生成しています:

  'red|green|blue|yellow|orange|black'

これをパラメータ(param_cols)としてMySQLストアドプロシージャに渡し、次のようにチェックできますか?

  SELECT tbl.products
  FROM table AS tbl
  WHERE tbl.color IN ( param_cols );

質問:これはパラメータを使用して可能ですか?IN、LIKE、またはREGEXを使用する必要がありますか?

編集
ヒントをありがとう。ただし、色のリストを変数としてストアドプロシージャに渡すことができるかどうか、または各色を個別に挿入する必要があるかどうかについては、もっと心配していますか?

4

2 に答える 2

3

FIND_IN_SET関数があるようです:

 SELECT tbl.products
 FROM table AS tbl
 WHERE FIND_IN_SET(tbl.color , 'red,green,blue,yellow,orange,black');

ただし、これをインデックスで使用できるかどうかはわかりません。

于 2012-06-21T10:25:04.253 に答える
1

色にintインデックスがある場合は、それを使用することをお勧めします。

しかし、あなたは正しい方向に進んでいます、あなたはINを使うことができます

SELECT tbl.products FROM table as tbl WHERE tbl.color 
IN ('red','green','blue','yellow','orange','black')

ただし、これは完全に一致するもののみを検索します。

于 2012-06-21T10:21:50.193 に答える