如何返回MySQL中一列中的文本值是另一列中文本值的一部分的行



我有一个格式如下的数据集:

dish        | fruit
---------   +------
Orange Pie  | Orange
Stew Soup   | Apple
Pear Cream  | Pear
Wine Drink  | Grapes
Plum Dessert| Plum

我想检查所有的行,只返回水果名称是菜名的一部分的行。

我一直在尝试以下查询的不同变体,但它要么不起作用,要么无法完成任务:

SELECT *
FROM schema.table
WHERE fruit LIKE (CONCAT('%',dish,'%'))
;

我真的很感谢在这方面的帮助。提前感谢!

您希望LIKE的操作数反过来:

SELECT *
FROM schema.table
WHERE dish LIKE CONCAT('%', fruit, '%')

请注意,不需要CONCAT()周围的括号。

SELECT *
FROM schema.table
WHERE LOCATE(fruit, dish)

根据需要的案例依赖性,您可能需要指定COLLATION。

最新更新