首页 > 解决方案 > mysql 中的 LIKE 'string' 和 LIKE '%string%' 工作不一样

问题描述

我对上面的标题感到困惑。

SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK%' ORDER BY `id` ASC

在这里,我从 DB 中得到 4 行,所有行的 party_name 都在里面包含“DMK”。

SELECT * FROM `parties` WHERE `party_name` LIKE 'DMK' ORDER BY `id` ASC

在这里,我得到确切的一行,其中包含 party_name 作为 'DMK'

第一个查询是搜索字符串的一部分。第二个查询是搜索确切的字符串

是吗 ??

还是两者都一样?

抱歉问这种问题,谢谢

标签: phpmysqlmysqlisql-like

解决方案


如果您LIKE不使用 % 通配符,则与等号 ( =) 的行为相同。

所以如果你写:

 SELECT * FROM parties WHERE party_name LIKE 'DMK' ORDER BY id ASC

是否相同:

SELECT * FROM parties WHERE party_name = 'DMK' ORDER BY id ASC

如果你写:

SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK%' ORDER BY `id` ASC

您会找到所有包含 DMK 的party_name

如果你写:

SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK' ORDER BY `id` ASC

您会发现所有party_name 都以 DMK 结尾

如果你写:

SELECT * FROM `parties` WHERE `party_name` LIKE 'DMK%' ORDER BY `id` ASC

您会发现所有party_name 都以 DMK 开头


推荐阅读