MySQL中的LIKE'string'和LIKE'%string%'无法正常工作

时间:2019-01-03 11:53:27

标签: php mysql mysqli sql-like

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

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'

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

是吗?

还是两者相同?

很抱歉, 谢谢

3 个答案:

答案 0 :(得分:5)

如果您使用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开头

答案 1 :(得分:1)

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 

答案 2 :(得分:1)

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