Php 在逗号分隔的列表中搜索字符串

Php 在逗号分隔的列表中搜索字符串,php,mysql,regex,search,comma,Php,Mysql,Regex,Search,Comma,我正在尝试搜索一个食谱表,其中没有任何搜索词。每个配方的成分存储在一个字段中,用逗号分隔 我尝试过使用WHERE NOT MATCH…对抗,但在我搜索豌豆的情况下,这不起作用。它将返回含有豌豆蛋白的结果。我不需要那个。这也是多元化的一个问题 我试着使用NOT REGEXP,但我对正则表达式不太熟悉,过去两天我在谷歌上做的所有搜索都没有结果 是否有任何方法可以在此表中搜索此字段中的多个值并在结果中排除它们?请检查匹配的运算符。。。反对 我想你要找的是: WHERE MATCH(ingredient

我正在尝试搜索一个食谱表,其中没有任何搜索词。每个配方的成分存储在一个字段中,用逗号分隔

我尝试过使用WHERE NOT MATCH…对抗,但在我搜索豌豆的情况下,这不起作用。它将返回含有豌豆蛋白的结果。我不需要那个。这也是多元化的一个问题

我试着使用NOT REGEXP,但我对正则表达式不太熟悉,过去两天我在谷歌上做的所有搜索都没有结果


是否有任何方法可以在此表中搜索此字段中的多个值并在结果中排除它们?

请检查匹配的运算符。。。反对

我想你要找的是:

WHERE MATCH(ingredients) AGAINST ("-pea*" in boolean mode)
示例:

pea protein,radish
// not returned (as desired)

peas,beans
// not returned (as desired)
但仍有一些问题:

peanut butter,bacon
// not returned (not as desired)

green pea soup,bacon
// returned (not as desired)
我有点想做得“正确”,你需要每个成分的元数据

或者,你可以在食谱上贴上过敏原标签——与配料本身分开

例如,如果有人对“麸质”过敏,那实际上不是配方中的一种成分。这是许多配方成分的特性,但


这种方法需要你编制一份所有已知过敏原的列表,然后将其应用到食谱中,不确定你的上下文,但过敏原标签可以作为一项大众分类任务。

我会将成分放在另一个表中:RecipereRecipe\u IngredingRedients或你可以使用
not FIND\u in\u SET()
。我尝试在设置中查找\u,但无效。它仍然会遇到豌豆的问题!这是针对过敏DB的,所以如果有人对豌豆过敏,我不能在结果中加入豌豆纤维或豌豆蛋白。这只是一个例子如果我把配料放进去,我仍然会有同样的问题不是吗?我不是DB Design的专业人士,所以如果这是更好的方法,但我仍然需要针对itI进行搜索,我开始认为我的第一种方法是最好的,不匹配的。然后我可以添加到我的PHP中,包含类似的搜索和排除术语?你能显示你的表结构吗?我想你是对的,我只需要继续使用操作符。我喜欢你为某些过敏原的配方贴标签的想法,但不幸的是,这必须在这些患者的成分水平上。