我对上面的标题感到困惑。
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'
第一个查询正在搜索字符串的一部分。 第二个查询正在搜索确切的字符串
是吗?
还是两者相同?
很抱歉, 谢谢
答案 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