问题与精确匹配返回错误结果
我们有,我们使用下面的查询从MySQL意想不到的结果...问题与精确匹配返回错误结果
SELECT * FROM `tbl.members` WHERE `referredby` LIKE '%MEM04912%';
,并返回正确的结果(5),但是当我们试图精确匹配如下...
SELECT * FROM `tbl.members` WHERE `referredby` = 'MEM04912';
我们只得到一个结果,但正确的值是5,你能帮我解决同样的问题。
这两个查询是彼此不同的。第一个查找包含MEM04912
的列referredby
内的记录,而第二个查找具有确切值的MEM04912
的记录。
给定一组数据,
referredby
==============
AMEM04912
MEM04912
MEM049123
XMEM04912X
当你执行你的第一个查询,将返回所有的记录,因为它们都包含您的搜索字符串的一部分,而你的第二个查询将只返回第二记录,因为它是唯一与您的搜索字符串完全匹配的记录。
打了我几秒XD –
@ 491243那么为什么第二个查询也没有返回5个结果,因为第二个查询的表中有5行 – seoppc
@seoppc你的意思是所有记录都等于'MEM04912'吗?你有没有检查字符串上的空格? –
如果查询...
SELECT * FROM `tbl.members` WHERE `referredby` LIKE '%MEM04912%';
你会得到所有的结果,其中列referredby
包含字符串MEM04912
,例如SOMEMEM04912
,MEM04912MORE
等,如果你执行...
SELECT * FROM `tbl.members` WHERE `referredby` = 'MEM04912';
你得到的只是列,其中referredby
正好等于MEM04912
。
SELECT * FROM `tbl.members` WHERE `referredby` LIKE '%MEM04912%';
为您提供类似MEM049121,AMEM04912等的结果。
SELECT * FROM `tbl.members` WHERE `referredby` = 'MEM04912';
只给你的结果,其中referredby正是MEM04912在前面还是后面添加任何额外的字符或数字MEM04912
请提供您的表中的一些数据 –
听起来像其他行有多余的字符或空格在'referencedby'字段中,如果我正确地认为你的意思是你应该得到与两个查询相同数量的行。在输入数据到数据库之前,你应该修剪输入。 –