MySQL结果为0,即使我可以在表中看到它

时间:2014-10-28 04:04:52

标签: mysql

大家好我有一个我从未遇到过的有趣问题,但似乎每隔一段时间就出现在这里,但是没有一个像我的场景一样。

我在MySQL中有一个表,用于保存从.csv

导入的供应商数据

然后我按照供应商代码匹配产品。

然而,在这样做的过程中,我没有收到匹配,即使我可以在表格中看到预期的结果。

这是我的问题:

SELECT  `dealer` ,  `qty` 
FROM  `supplier_import_all` 
WHERE  `supplier_id` =  '13'
AND  `supplier_code` =  'DIGITAL979'
LIMIT 0 , 30

MySQL结果消息:

  

MySQL返回一个空结果集(即零行)。 (查询了   0.0027秒)

这是不对的,我可以在PHPMyAdmin中看到表中的条目:

enter image description here

对于这一点的任何想法都会非常感激,因为我很难过。


在插入数据库之前添加了以下内容,它似乎解决了问题:

$supplier_code = str_replace(' ', '', $supplier_code);
$supplier_code = preg_replace('/[^A-Za-z0-9\-]/', '', $supplier_code);

仍然有兴趣知道为什么修剪不起作用,因为我确信它必须只是在数据周围的白色间距,这已被其他人重申。

4 个答案:

答案 0 :(得分:1)

如果您有show create table,这将有所帮助。

您的列中似乎有错误或额外的数据。

试试这个

SELECT dealer , qty FROM supplier_import_all WHERE trim(supplier_id) = '13' AND trim(supplier_code) = 'DIGITAL979' LIMIT 0 , 30

如果这不起作用试试这个 SELECT dealer , qty FROM supplier_import_all WHERE trim(supplier_id) = '13' LIMIT 0 , 30

如果可以的话试试这个

SELECT dealer , qty FROM supplier_import_all WHERE trim(supplier_code) = 'DIGITAL979' LIMIT 0 , 30

这将帮助您确定哪个列包含错误数据。 通常,当您从文件导入数据时,会添加额外的空格/ charecater。

编辑 因为我们现在知道suplier_code列的问题。尝试在该列中修复该数据。 试试这个 ` 更新supplier_import_all 设置supplier_code = trim(supplier_code);

更新supplier_import_all 设置supplier_code = trim(" \ t"来自supplier_code);

更新supplier_import_all 设置supplier_code = trim(来自supplier_code的" \ n"); `

答案 1 :(得分:0)

您确定supplier_code中没有任何空格吗?从csv导入时,有时会发生这种情况。如果您有主键,请通过主键查找该记录。

答案 2 :(得分:0)

似乎可能有一些额外的空间存储在数据库中,而不是在那里查询相同的pl尝试使用like运算符,看看问题是否仍然存在,如果是,那真的很奇怪

答案 3 :(得分:0)

13在列中右对齐,这意味着它可能是数字类型,而不是文本类型。尝试

...
WHERE  `supplier_id` = 13 AND ...

13周围没有字符串分隔符)