2013-08-17 35 views
0

我们有,我们使用下面的查询从MySQL意想不到的结果...问题与精确匹配返回错误结果

SELECT * FROM `tbl.members` WHERE `referredby` LIKE '%MEM04912%'; 

,并返回正确的结果(5),但是当我们试图精确匹配如下...

SELECT * FROM `tbl.members` WHERE `referredby` = 'MEM04912'; 

我们只得到一个结果,但正确的值是5,你能帮我解决同样的问题。

+0

请提供您的表中的一些数据 –

+0

听起来像其他行有多余的字符或空格在'referencedby'字段中,如果我正确地认为你的意思是你应该得到与两个查询相同数量的行。在输入数据到数据库之前,你应该修剪输入。 –

回答

2

这两个查询是彼此不同的。第一个查找包含MEM04912的列referredby内的记录,而第二个查找具有确切值MEM04912的记录。

给定一组数据,

referredby 
============== 
AMEM04912 
MEM04912 
MEM049123 
XMEM04912X 

当你执行你的第一个查询,将返回所有的记录,因为它们都包含您的搜索字符串的一部分,而你的第二个查询将只返回第二记录,因为它是唯一与您的搜索字符串完全匹配的记录。

+0

打了我几秒XD –

+0

@ 491243那么为什么第二个查询也没有返回5个结果,因为第二个查询的表中有5行 – seoppc

+0

@seoppc你的意思是所有记录都等于'MEM04912'吗?你有没有检查字符串上的空格? –

0

如果查询...

SELECT * FROM `tbl.members` WHERE `referredby` LIKE '%MEM04912%'; 

你会得到所有的结果,其中列referredby包含字符串MEM04912,例如SOMEMEM04912MEM04912MORE等,如果你执行...

SELECT * FROM `tbl.members` WHERE `referredby` = 'MEM04912'; 

你得到的只是列,其中referredby正好等于MEM04912

1
SELECT * FROM `tbl.members` WHERE `referredby` LIKE '%MEM04912%'; 

为您提供类似MEM049121,AMEM04912等的结果。

SELECT * FROM `tbl.members` WHERE `referredby` = 'MEM04912'; 

只给你的结果,其中referredby正是MEM04912在前面还是后面添加任何额外的字符或数字MEM04912