如何 return 行,其中一列中的文本值是 MySQL 中另一列中文本值的一部分?

How to return rows where text value in one column is part of text value in the other column in MySQL?

我有以下格式的数据集:

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

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

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

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。