LIKE 'string' 和 LIKE '%string%' in mysql 不一样

LIKE 'string' and LIKE '%string%' in mysql not working as same

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

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

这里我从数据库中获取了 4 行,所有行的 party_name 都包含 'DMK'。

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

这里我得到了包含 party_name 作为 'DMK'

的确切一行

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

是吗??

或者两者相同?

抱歉提出此类问题, 谢谢

如果您使用不带 % 通配符的 LIKE 与 equals (=) 的行为相同。

所以如果你写:

 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

你会发现所有 party_name 持有 DMK

的人

如果你写:

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

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

表示所有包含 DMK 的字符串,例如 ('DMK1, 'ADMK', ADMKB')

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

表示所有字符串等于 DMK 并且等同于

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

将仅匹配值为 'DMK' 的列。它本质上是一样的 party_name ='DMK'

party_name LIKE '%DMK%'

这将匹配 'DMK' 存在于任何地方的字符串 例子 。 abcDMK、abcDMKefg、DMKabc

party_name LIKE '%DMK'

这将匹配最后存在 'DMK' 的字符串 示例:它将匹配 abcDMK 但不会匹配 abcDMKefg

party_name LIKE 'DMK%'

这将匹配开头存在 'DMK' 的字符串 示例:它不会是 abcDMK,但它不会匹配 abcDMKefg