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');

不过,我不确定这是否可以与 index 一起使用

于 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 回答