mysql WHERE SET数据类型包含item

awe*_*r89 6 mysql

我有一个表使用其中一个字段的SET数据类型,并检查该字段是否包含我使用的特定元素

SELECT * FROM table WHERE myset LIKE %value%;
Run Code Online (Sandbox Code Playgroud)

这大部分时间都有效,但是两个潜在的值具有相同的单词,即集合中的一个可能元素是Poodle,另一个是玩具贵宾犬.如果我做

SELECT * FROM table WHERE myset LIKE %Poodle%;
Run Code Online (Sandbox Code Playgroud)

它返回所有具有Poodle或Toy Poodle的行.如果该字段包含Poodle,我希望它只返回.如果我删除通配符,那么它将只返回只有Poodle的行.所以基本上,如果表是:

id | myset
-------------------------
1  | "Poodle"
2  | "Toy Poodle"
3  | "Poodle","Toy Poodle"
4  | "Toy Poodle","Poodle"
Run Code Online (Sandbox Code Playgroud)

我需要一个返回1,3和4而不是2的select语句.这可能吗?

Lai*_*jus 11

您需要这样做:SELECT * FROM table WHERE FIND_IN_SET('Poodle',myset)>0文档中所述


Ali*_*own 9

如何使用FIND_IN_SET方法?