大家好我有一个我从未遇到过的有趣问题,但似乎每隔一段时间就出现在这里,但是没有一个像我的场景一样。
我在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中看到表中的条目:
对于这一点的任何想法都会非常感激,因为我很难过。
在插入数据库之前添加了以下内容,它似乎解决了问题:
$supplier_code = str_replace(' ', '', $supplier_code);
$supplier_code = preg_replace('/[^A-Za-z0-9\-]/', '', $supplier_code);
仍然有兴趣知道为什么修剪不起作用,因为我确信它必须只是在数据周围的白色间距,这已被其他人重申。
答案 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
周围没有字符串分隔符)