2017-05-19 43 views
1

我甚至不知道如何正确地问这个问题,但这里是问题所在。 我有一个名为'name','email'和'number'的表作为我的列,其ID在AUTO_INCREMENT上设置为PRIMARY KEY。当我尝试找到这样一行:不输出匹配WHERE值的行

SELECT * FROM MyTable WHERE name='John Doe'` or `SELECT * FROM MyTable WHERE email='[email protected] 

我总是得到我没有任何大惊小怪的行。 所有三列都是长度为100的VARCHAR。

'号码'列包含一串随机数,因为我从RFID卡中取出这些号码(因此将它们与名称相关联的数据库)。所以当我做

SELECT * FROM MyTable WHERE number='12334567890' 

突然一切都不工作,并返回0行。

这里是它变得陌生的地方。如果我首先查询数字,我得到0行,但是,如果我先查询名称(返回一行),然后查询关联的数字IT RETURNS A ROW。如果我要查询另一个数字,我再次得到0行,如果我要查询以前的数字,我再次得到0行...

我到目前为止尝试附加另一个字符串,如'num 1234567890',但这没有帮助(也许这是一些格式怪癖,我不知道)。

当谈到MySQL时,我是一个初学者,但是像这样简单的事情应该是蛋糕散步,然而在这里我是。

回答

1
SELECT * FROM MyTable WHERE number LIKE '%12334567890%' 

试试这个

+0

圣米娅那工作!你能解释一下这个语法的作用吗? – IKouz

+0

事情就是那个兄弟,当你正在使用=它试图匹配你传递的确切数字。但是当你使用LIKE时,它会找到所有具有该模式的值。 – Exprator

+0

但如果你的行包含这样的数字'8541233456789033'那么上面的查询返回这个数字也是 – sunilwananje

0

首先,你了解其中的语句,如果你正在写在那里山坳=“东西”,它将匹配列中的字符串,如果找到一个匹配,那么只有它会返回数据。在你的情况下,它是一个随机数,所以你不能将数据与where子句相提并论,除非你知道确切的值。

SELECT * FROM MyTable WHERE number REGEXP '^[0-9].*$' 
+0

我查询的数字字符串并不是真正的随机数,因为我有一张表将位置关联的数字存储到名称中,并且我有一个RFID扫描器来拉取数字并调用PHP脚本来查询匹配的数字。 – IKouz

+0

你能给我一些包含数字列的样本数据吗? – RiDev